总结-layoutSubview的调用场景


首先要起个代号(不然连我自己都会晕+_+)

视图A 、 被添加到视图A的子视图B


  • 使用addSubview添加时会调用layoutSubView
  • 在A开始被添加到父视图 (如果此时A没有frame 则不会调用layoutSubview)
  • 添加B 到A的时候调用 (如果此时B有frame 则会调用)

  • 设置A的父视图的Size时会调用
  • 设置A的Size时会进行智能判断-->仅当 Size与之前不同时,才会调用A的layoutSubview
  • 设置B的frame时会调用
    (如果仅仅设置frame 但是没有调用过addSubview添加到父控件上 那么也不会调用layoutSubview )

  • 滚动scrollview 的时候也会调用
  • 设备的orientation(方向)改变时,涉及改变的UIViewControl 的root view
    (此时所有的控件被重新布局,相当于A的frame被改变 那么会调用layoutSubview 而且如果控件有B的话会再调用一次layoutSubview)
  • Resizing(拉伸) 一个 控件 也会调用它的父控件的layoutSubview
  • 调用setNeedsLayout时

还有一个重要的点,layoutSubview不是在调用完比如addSubview等方法之后就马上调用,而是会在调用addSubview方法所在的作用域结束之后之后才调用,因此即使你在同一个方法中既使用了addSubViews又更改了frame,也是只会调用一次layoutSubview而已

你可能感兴趣的:(总结-layoutSubview的调用场景)