0

如何读取UITextView在情节提要中创建的 x、y 位置和宽度?

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

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

在.h...

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

在.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
4

3 回答 3

0

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

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

于 2013-05-20T17:44:00.447 回答
0

尝试在viewDidLayoutSubviews而不是viewDidLoad. 如果您的 Storyboard 设置为使用 AutoLayout 子视图的位置比您想象的要晚...

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

于 2013-05-20T19:08:40.603 回答
0

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

@interface ataglance_central_controller

应该更像

@interface MYAtAGlanceCentralController

类名应以大写字母开头,(并带有前缀)

于 2013-05-24T07:00:30.653 回答