我们用代码创建了一个按钮 然后利用Masonry来添加宽高和坐标 接下来我们马上需要用到该按钮的尺寸,会发现取到的是{0,0}} 代码如下:
UIButton *btn = [[UIButton alloc] init];
[self.view addSubview: btn];
[btn mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(80);
make.left.offset(20);
make.top.offset(100);
}];
NSLog(@"%@", btn);
解决方法:
第一种:
[self.view layoutIfNeeded];
NSLog(@"%@", btn);
没错,就是 layoutIfNeeded 这样就能马上获取到正确的尺寸
第二种:
// 延迟0.1秒后获取frame
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"%@", btn);
});