如何读取在故事板中创建的xcode UITextView的x,y位置

时间:2013-05-20 17:39:40

标签: iphone ios xcode ipad uitextview

如何阅读故事板中创建的UITextView的x,y位置和宽度?

在运行时,我需要以编程方式在UITextBox下面创建其他对象吗? 并且所有运行时创建的对象都必须基于故事板UITextView的位置。

我找不到答案。我尝试过的代码(如下)返回0,0

in .h ...

@interface ataglance_central_controller : UIViewController
{
    IBOutlet UITextView *transmitter_box;
}

in .m ....................

enter code here
#import "ataglance_central_controller.h"
#import <CoreBluetooth/CoreBluetooth.h> 
#import <QuartzCore/QuartzCore.h>


#import "TransferService.h"

@interface ataglance_central_controller () <CBCentralManagerDelegate, CBPeripheralDelegate>
{
UITextView* battery_status_textview;
}

@property (strong, nonatomic) IBOutlet UITextView   *textview;
@property (strong, nonatomic) CBCentralManager      *centralManager;
@property (strong, nonatomic) CBPeripheral          *discoveredPeripheral;
@property (strong, nonatomic) NSMutableData         *data;

@end



@implementation ataglance_central_controller

-(void)viewDidLoad
{
        NSLog(@"    ataglance_central_controller.m viewDidLoad.     ");
   [super viewDidLoad];


NSLog(@" x <<<<<<<<<<<<<<<<<<< b  %f",  transmitter_box.frame.origin.x );
NSLog(@" y <<<<<<<<<<<<<<<<<<< b  %f", transmitter_box.frame.origin.y );

}


-(void)viewDidLayoutSubviews
{

NSLog(@" x viewDidLayoutSubviews  %f", transmitter_box.frame.origin.x );

NSLog(@" y viewDidLayoutSubviews  %f", transmitter_box.frame.origin.y );


}

日志

2013-05-21 12:12:10.708 DW x2[447:c07]  ataglance_central_controller.m viewDidLoad.     
2013-05-21 12:12:10.709 DW x2[447:c07]  x <<<<<<<<<<<<<<<<<<< b  0.000000
2013-05-21 12:12:10.709 DW x2[447:c07]  y <<<<<<<<<<<<<<<<<<< b  0.000000
2013-05-21 12:12:10.712 DW x2[447:c07] Battery status is unknown.
2013-05-21 12:12:10.743 DW x2[447:c07]  x viewDidLayoutSubviews  270.000000
2013-05-21 12:12:10.744 DW x2[447:c07]  y viewDidLayoutSubviews  12.000000

3 个答案:

答案 0 :(得分:0)

该图层位于UITextView内并填充其所有者。

您正在寻找的是frame您的控制权:transmitter_box.frame.origin.xtransmitter_box.frame.origin.y

答案 1 :(得分:0)

尝试在viewDidLayoutSubviews而不是viewDidLoad中记录框架详细信息。如果你的 故事板设置为使用AutoLayout子视图比您想象的更晚定位......

当然,这不应该阻止你在viewDidLoad中添加其他子视图,并使用自动布局约束相对于UITextView定位它们,而不是直接设置它们的帧。

答案 2 :(得分:0)

我没有你的答案,幸运的是你已经找到了答案。但是,您似乎偏离了Objective-C命名约定。

@interface ataglance_central_controller

应该更像是

@interface MYAtAGlanceCentralController

类名应以大写字母开头,(并以某些为前缀)