layoutSubviews:
不是供用户调用的,而是系统自动调用的,我们能做的就是重写该方法.
1 调用 addSubview 方法时会执行该方法。
2 设置并改变子视图的frame属性时会触发该方法。
3 滑动UIScrollView及继承与UIScrollView的控件时会触发该方法。
4 旋转屏幕时,会触发父视图的layoutSubviews方法。
5 设置并改变视图的frame属性时会触发父视图的layoutSubviews方法。
layoutIfNeeded:
立即布局子视图,使用这个方法可以在系统绘制视图之前强制(重新)布局子视图。这个方法将从当前视图开始布局当前视图树之下的所有子视图。
setNeedsLayout:
调用之后不会立即更新布局(在当前布局周期发送setNeedsLayout消息是无效的,直到下一个布局周期才会触发布局更新。)当你想要调整子视图的布局时,你可以在应用的主线程调用该方法。这个方法将记录布局请求,并立即返回。由于该方法不强制立即更新,而是等到下一个更新周期,所以你可以在当前的无效周期内添加多个多个视图的布局,等到下一个周期同一更新。这么做通常可以获得更好的性能。
网友评论