今天在浏览网站的时候,无意中看到别人的一个关于layoutSubViews的总结,感觉蛮实用的,特此记录下来方便翻阅。如有侵权之处,请联系立即删除。原文链接在此。内部作者的博客地址已经失效,所以指向了stackoverflow。
- 视图的
init
方法不会触发layoutSubviews
。 -
addSubView:
会触发layoutSubviews
的调用。包括父视图和它所有的子视图。(ps: 下面有评论指出这条可能有误,具体情形如下: 添加view1.2
到view1
,view1.2
和view1
的方法layoutSubviews
会调用,而view1.1
则不会调用该方法。view1.2
和view1.1
均为view1
的子视图。) - 视图设置
frame
且frame
变化的时候会调用layoutSubviews
。 - 滚动一个
UIScrollView
会触发UIScrollView
和他的父视图的layoutSubviews
。 - 旋转设备会出发
viewController
的根视图的layoutSubviews
。(ps: 有评论指出:旋转设备只有在布局变化的时候才会调用该方法,如果仅仅是UIInterfaceOrientationLandscapeLeft
转换为UIInterfaceOrientationLandscapeRight
, 则不会调用。) - 调整一个视图的大小会触发它的父视图的
layoutSubviews
。
希望可以为诸位的知识体系做个补充。