1

我只想轻松打印出 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

你能帮我如何打印它们吗?

在此处输入图像描述

4

6 回答 6

3

在自动布局的情况下,它会继续计算框架直到viewWillAppear被调用,发布NSLoginviewDidAppear方法将为您提供所需的按钮范围

于 2012-10-09T10:24:39.797 回答
0

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

于 2012-10-09T10:06:49.587 回答
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);
}
于 2012-10-09T10:15:13.543 回答
0

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

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

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

于 2012-10-09T10:45:15.757 回答
0

尝试这个 -

myButton.frame.origin.x;
myButton.frame.origin.y;
myButton.frame.size.width;
myButton.frame.size.height;
于 2012-10-09T10:04:13.893 回答
0

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

于 2015-04-08T02:20:12.303 回答