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];
}