我只想轻松打印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
你能帮帮我怎样打印出来?
答案 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 。这是一个重要的问题。此外,这可能被称为无数次。所以,如果您正在使用这些值做一些昂贵的事情,请处理它。