控件利用Masonry添加约束之后 如何立刻获取到该控件的frame

我们用代码创建了一个按钮 然后利用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);
});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容