layoutSubviews总结

来源:互联网 发布:php调用js函数返回值 编辑:程序博客网 时间:2024/06/16 06:37

layoutSubviews在以下情况下会被调用:

1、init初始化不会触发layoutSubviews

   但是是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,也会触发

2、addSubview会触发layoutSubviews

3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化(这里也包括view中的其它subview,只要有任何一个view的frame发生了变化,这个方法都会被再次出发调用)

4、滚动一个UIScrollView会触发layoutSubviews

5、旋转Screen会触发父UIView上的layoutSubviews事件 //无法测试出来

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

在苹果的官方文档中强调:

      You should override this method only if the autoresizing behaviors of the subviews do not offer the behavior you want。

使用场景:可以在自定义的view中复写这个方法并且利用他来调整任何子视图的位置和大小。例如,一个需要提供一个大的滚动区域的view可能需要使用几个不同的sub view来作为titles。而不是仅仅创建一个大的view。在这个方法实现中,view可以隐藏任何当前在屏幕外的子view或者重新定位这些子view。并且使用他们来绘制新的内容。

0 0