iOS10、Xcode8 适配 UI 遇到坑 (layoutIfNeeded)

Snip20161012_1.png
CADE9A0325F453FE4AA5670EBB21E4EE.jpg
前言:

如上图所示,图一是正常的,但是最近升级 Xocde8.0 适配 iOS10 的时候出现了图二的情况,已经确保约束各个方面都没有问题的,但是看到,上面的视图明显被拉伸了,打印了了上面视图的 frame <UIView: 0x1477ab020; frame = (0 0; 1000 1000); autoresize = RM+BM; layer = <CALayer: 0x174630480>> 一直很费解为什么宽和高会变为1000 ,刚开始以为是自己约束的问题,纠结了很久,现在找到了解决方法

造成原因:

Xcode8方式编译后,在UIView还没有“布局完毕”的时候默认返回的frame的size大小为1000x1000,等到“布局完毕”后才能获取到正确的大小。

解决方法:

在viewDidLoad或者awakeFromNib调用完super方法后再调用View的layoutIfNeeded即可获取到正确的frame值。

-(void)awakeFromNib{
    [super awakeFromNib];
    //调用此方法后,才可以获取到正确的frame
    [self layoutIfNeeded];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    //调用此方法后,才可以获取到正确的frame
    [self.topView layoutIfNeeded];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容