在Storyboard里添加控件之后,添加动态约束之后发现在控制器里面无法获取到真实的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了。
网上看到有人说写道viewDidLayoutsubViews方法里面,从viewController的生命周期看
viewDidLoad
viewWillAppear
viewWillLayoutsubViews
viewDidLayoutsubViews
viewDidAppear
viewWillDisappear
viewDidDisappear
但是我实验了之后发现还是不能获取到真正的frame。希望上面的方法会帮到部分人。