开发中为了方便很多时候使用了xib,很多子视图使用了autolayout布局
这里很多小伙伴有疑问说获取到的子view的frame不正确
控制器view使用xib
这个和页面渲染顺序有关,在加载完成后,绘制还没有结束,所以viewDidLoad中拿不到真实的frame
我们这个时候拿到的只是xib中默认的宽和高,并非拉伸后的宽高
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
// 所以我们要在这个方法中获取view的实际宽高
// 如果有获取的不正确的情况,用下面方法强制刷新界面,就可以获取正确的高度了
[self.view layoutIfNeeded];
}
cell中使用xib
和上面同理
- (void)layoutSubviews {
[super layoutSubviews];
// 这里的contentView的尺寸是实际尺寸
// 如果有获取的不正确的情况,用下面方法强制刷新界面,就可以获取正确的高度了
[self.view layoutIfNeeded];
}
网友评论