自动约束frame获取

在View里

-(void)layoutSubviews {   

 [superlayoutSubviews];// 获取到约束后的控件frame

}

在controller里

- (void)viewDidLayoutSubviews {   

 [superviewDidLayoutSubviews];// 获取到约束后的控件frame

}

multipler属性表示约束值为约束对象的乘因数,dividedBy属性表示约束值为约束对象的除因数,可用于设置view的宽高比


layoutSubviews

这个方法,默认没有做任何事情,需要子类进行重写 。 系统在很多时候会去调用这个方法:

1.初始化不会触发layoutSubviews,但是如果设置了不为CGRectZero的frame的时候就会触发。

2.addSubview会触发layoutSubviews

3.设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化

4.滚动一个UIScrollView会触发layoutSubviews

5.旋转Screen会触发父UIView上的layoutSubviews事件

6.改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

setNeedsLayout

标记为需要重新布局,不立即刷新,但layoutSubviews一定会被调用

配合layoutIfNeeded立即更新

layoutIfNeeded

如果,有需要刷新的标记,立即调用layoutSubviews进行布局

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

推荐阅读更多精彩内容