UIButton的边界和框架

时间:2012-10-09 09:59:25

标签: iphone objective-c ios

我只想轻松打印myButton尺寸。请检查代码:

@interface ViewController : UIViewController

@property (nonatomic, strong) IBOutlet UIButton *myButton;

和.m文件:

@implementation ViewController

@synthesize myButton;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    CGRect f2 = self.myButton.bounds;
    printf("x: %f\n", f2.origin.x);


    CGSize f3 = self.myButton.frame.size;
    printf("x: %f\n", f3.height);
}

- (void)viewWillAppear:(BOOL)animated {
    CGRect f2 = self.myButton.bounds;
    printf("x: %f\n", f2.origin.x);


    CGSize f3 = self.myButton.bounds.size;
    printf("x: %f\n", f3.height);
}

这是我在控制台中收到的内容:

x: 0.000000
x: 0.000000
x: 0.000000
x: 0.000000

你能帮帮我怎样打印出来?

enter image description here

6 个答案:

答案 0 :(得分:3)

如果是自动布局,则会继续计算框架,直到viewWillAppear被调用为止,在NSLog方法中发布viewDidAppear将为您提供所需的按钮边界

答案 1 :(得分:0)

试试这个 -

myButton.frame.origin.x;
myButton.frame.origin.y;
myButton.frame.size.width;
myButton.frame.size.height;

答案 2 :(得分:0)

请检查,参考.xib或Storyboard中的插座(无论你使用什么)。

答案 3 :(得分:0)

以下是viewDidLoad的正确代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    CGRect f2 = self.myButton.frame;
    NSLog("x origin: %f\n", f2.origin.x);
    NSLog("y origin: %f\n", f2.origin.y);
    NSLog("height: %f\n", f2.size.height);
    NSLog("width: %f\n", f2.size.width);
}

答案 4 :(得分:0)

另外需要注意的是,您可以使用便捷方法:

NSLog(@"self.myButton.bounds = %@", NSStringFromCGRect(self.myButton.bounds));
NSLog(@"self.myButton.frame = %@", NSStringFromCGRect(self.myButton.frame));

快速轻松地打印出CGRect,而无需使用不同的字符串格式或NSLog语句

答案 5 :(得分:0)

我知道这已经过时了,但是为了记录,按钮的尺寸不会在viewDidLoad或viewDidAppear中设置。使用自动布局时,请使用 viewDidLayoutSubviews 。这是一个重要的问题。此外,这可能被称为无数次。所以,如果您正在使用这些值做一些昂贵的事情,请处理它。