美文网首页selector
DrawRect         layoutSubview

DrawRect         layoutSubview

作者: 一代骄马 | 来源:发表于2017-09-21 17:20 被阅读19次

    用来画图,

    1.这个方法会在intiWithRect时候调用。如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。

    2、该方法在调用sizeToFit后被调用,所以可以先调用sizeToFit计算出size。然后系统自动调用drawRect:方法。

    3、通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。

    4、直接调用setNeedsDisplay,或者setNeedsDisplayInRect:触发drawRect:




    LayoutSubview


    • 使用addSubview添加时会调用layoutSubView
      • 在被添加到父视图 或添加子视图(如果此视图没有frame或子视图没有frame则不会调用)

    • 设置父视图或子视图Size时会调用
    • 自身的size改变

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

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

    如果要立即刷新,要先调用[view setNeedsLayout],把标记设为需要布局,然后马上调用[view layoutIfNeeded],实现布局

    鏈接:http://www.jianshu.com/p/db23c036998

    -(BOOL)needsUpdateConstraints

    使用此返回值去决定是否需要 调用updateConstraints作为正常布局过程的一部分。 

    - (void)setNeedsUpdateConstraints

    当一个自定义view的某个属性发生改变,并且可能影响到constraint时,需要调用此方法去标记constraints需要在未来的某个点更新,系统然后调用updateConstraints.

    - (void)updateConstraints

    更新约束,自定义view应该重写此方法在其中建立constraints. 注意:要在实现在最后调用[super updateConstraints] 

    - (void)updateConstraintsIfNeeded

    立即触发约束更新,自动更新布局。

    相关文章

      网友评论

        本文标题:DrawRect         layoutSubview

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