前言:
如上图所示,图一是正常的,但是最近升级 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];
}