美文网首页
layoutSubviews

layoutSubviews

作者: 若水water | 来源:发表于2021-08-13 15:13 被阅读0次
    layoutSubviews何时调用
    • alloc init 之后 不会调用,必须调用addSubview:方法之后才会调用
    • frame 或者 size 前后设置不一样,会调用
    • 通过addSubview:方法添加子视图之后会调用
    • 子视图的frame 改变的时候会调用
    • 当屏幕旋转时会调用该方法
    • 此方法不应该被直接调用,如果需要强制更新布局,那么应该在下一图形更新之前 设置setNeedsLayout,
      如果要立即更新布局应该调用setNeedsLayout,layoutIfNeeded
    什么情况下,子类需要重写该方法

    子类应该根据需要重写此方法,以便对其子视图执行更精确的布局。仅当子视图的自动调整和基于约束的行为无法提供所需的行为时,才会重写此方法。
    在该方法中可以重新对子控件进行布局,但是不应该初始化子控件,在该方法中能获取到子控件以及自身的frame(当你使用约束布局的时候)
    当你在init 方法中 创建了子视图后,如果需要另外设置子视图的frame,那么就可以实现该方法,如果你想要在init的同时布局子视图,并且之后子视图的frame 不受其他因素影响(一般用约束不会),那么就不用实现此方法。

    sizeToFit
    • sizeToFit 会自动调用 sizeThatFits方法
    • 不应该重写 sizeToFit方法,应该重写 sizeThatFits 方法
    • sizeThatFits 接收的size 是reciver 当前的size,返回的是一个合适的size
    • sizeToFit,sizeThatFits 方法没有递归,对subviews 不负责,只对自己负责

    drawRect

    • 是对recevier 的重绘,能获得context
    • setNeedDisplay标上一个需要被重绘的标记,在下一个draw 周期到来时自动重绘,iPhone的刷新频率是 60hz,1/60s每次

    相关文章

      网友评论

          本文标题:layoutSubviews

          本文链接:https://www.haomeiwen.com/subject/nzidbltx.html