使用storyboard添加约束后获取子控件的真实frame

在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。希望上面的方法会帮到部分人。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://www.cocoachina.com/cms/wap.php?action=article&id=1...
    Kevin追梦先生阅读 4,756评论 0 3
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,231评论 4 61
  • 走吧 走吧 下里巴人 阳春白雪 都走吧 阳关 独木 随你们走 下雨了 找个地方避避雨 天晴了 继续走 遇见做饭的人...
    e3f0f532d0d9阅读 1,137评论 0 1
  • 人活着,其实有许多事情无法言说。 有时走的太远,往往忘记了原路; 有时看的太清,往往看不到东西; 有时想的太多,往...
    耀磊阅读 2,662评论 0 2