如何阅读故事板中创建的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
答案 0 :(得分:0)
该图层位于UITextView
内并填充其所有者。
您正在寻找的是frame
您的控制权:transmitter_box.frame.origin.x
,transmitter_box.frame.origin.y
。
答案 1 :(得分:0)
尝试在viewDidLayoutSubviews
而不是viewDidLoad
中记录框架详细信息。如果你的
故事板设置为使用AutoLayout子视图比您想象的更晚定位......
当然,这不应该阻止你在viewDidLoad中添加其他子视图,并使用自动布局约束相对于UITextView定位它们,而不是直接设置它们的帧。
答案 2 :(得分:0)
我没有你的答案,幸运的是你已经找到了答案。但是,您似乎偏离了Objective-C命名约定。
@interface ataglance_central_controller
应该更像是
@interface MYAtAGlanceCentralController
类名应以大写字母开头,(并以某些为前缀)