在Storyboard里添加控件之后,添加動態(tài)約束之后發(fā)現(xiàn)在控制器里面無法獲取到真實的frame号俐,這是因為在你獲取frame的時候,layout并沒有適配完成定庵。
所以我們要在viewDidLoad里面添加下面這兩句:
[self.contentView setNeedsLayout];
[self.contentView layoutIfNeeded];
//不加這下面兩句,獲得的尺寸會是storyboard里的未完成autolayout適配時的尺寸(把這兩句寫在viewDidLoad:方法中庇楞,將contentView換成控制器的view)
self.imageView.layer.cornerRadius = self.imageView.frame.size.width / 2;
self.imageView.clipsToBounds = YES;
NSLog(@"%@", NSStringFromCGRect(self.imageView.frame));
//這時候打印的frame就是正常顯示到屏幕上的frame了捏卓。
網(wǎng)上看到有人說寫道viewDidLayoutsubViews方法里面极祸,從viewController的生命周期看
viewDidLoad
viewWillAppear
viewWillLayoutsubViews
viewDidLayoutsubViews
viewDidAppear
viewWillDisappear
viewDidDisappear
但是我實驗了之后發(fā)現(xiàn)還是不能獲取到真正的frame。希望上面的方法會幫到部分人怠晴。