setNeedsLayout layoutIfNeeded setNeedsDisplay

setNeedsLayout: 标记当前视图,在runloop的下一个周期调用layoutSubviews。

layoutIfNeeded:如果这个视图有被setNeedsLayout方法标记的,那么会立即执行layoutSubviews方法。

setNeedsDisplay:调用这个方法会执行- (void)drawRect:(CGRect)rect方法。

layoutSubviews触发条件

1、init初始化不会触发layoutSubviews。

2、addSubview会触发layoutSubviews。

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

4、滚动一个UIScrollView会触发layoutSubviews。

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

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

7、直接调用setLayoutSubviews。

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

推荐阅读更多精彩内容