iOS. swift layoutSubviews()

一:

iOS swift  layoutSubviews() 

调用方法:

直接调用setLayoutSubviews。(这个在上面苹果官方文档里有说明) 

addSubview的时候。 

当view的frame发生改变的时候。 

滑动UIScrollView的时候。 

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

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


二: 

setNeedsLayout 和 layoutIfNeeded 的区别

解决:

setNeedsLayout :需要重新布局,  runloop结束前刷新, 只会刷新一次, layoutSubviews 一定会被调用。 

layoutIfNeeded : 如果有需要刷新的标记 ,立即调用layoutSubviews 进行布局(如果没有标记, 不会调用layoutSubviews)

layoutIfNeeded 不一定会调用layoutSubviews方法。

setNeedsLayout 一定会调用layoutSubviews 方法, 在下一轮runloop 结束前。

如果在runloop 中立即刷新,调用顺序是:

1 (self  setNeedsLayout) 

2 (self  layoutIfNeeded) 

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

推荐阅读更多精彩内容