获取xib自动布局后的frame

OC中 我们使用xib创建的View,如果说想获得控件自动布局后的frame就需要在:
- (void)layoutSubviews
{
 [super layoutSubviews];
//下面两行代码必不可少
 [self.contentView setNeedsLayout];
 [self.contentView layoutIfNeeded];
//下面就可以获取自动布局之后的frame
}

2.如果我们想要获取的是vc控制器的控件frame,那么我们需要在:
- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
//下面去获取frame  是正确的
}

setNeedsLayout : 标记需要重新布局,异步调用layoutIfNeeded去刷新布局,不会立即去刷新,而是等待下一次runloop结束前刷新。
layoutIfNeeded:如果有需要刷新的标记,就立即去刷新。

如果我们需要在当前runloop立即去刷新布局,可以先调用setNeedsLayout标记需要去刷新,然后调用layoutIfNeeded立即刷新布局
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容