美文网首页面试思考
setNeedsDisplay、setNeedsLayout、l

setNeedsDisplay、setNeedsLayout、l

作者: 白水灬煮一切 | 来源:发表于2019-08-10 18:25 被阅读0次

    setNeedsDisplay、setNeedsLayout、layoutIfNeed

    setNeedsDisplay会调用drawRect方法重画页面

    setNeedsLayout会调用layoutSubviews,页面才会发生变化。调用layoutIfNeed不会触发

    VC中 viewDidLayoutSubviews 和 viewWillLayoutSubviews 里面重写 views的布局

    一、什么情况下会调用layoutSubviews ?  https://www.jianshu.com/p/33a28bb14749

      1、调用setNeedsLayout  layoutIfNeed,直接调用setLayoutSubviews

      2、addsubview时触发layoutSubviews

      3、改变一个view的frame会触发layoutSubviews

      4、改变view的size会触发父view的layoutSubviews

      5、滚动会触发layoutSubviews

      6、旋转Screen会触发父UIView上的layoutSubviews事件

    二、什么情况会调用draw rect方法

      1、controller的loadView、viewdidLoad方法调用之后,view即将出现在屏幕之前系统调用drawRect。

      2、sizeToFit方法调用之后。

      3、设置contetMode为UIViewCOntentModelRedraw,之后每次更改frame的时候调用redraw方法。

      4、调用setNeedsDisplay方法。

    相关文章

      网友评论

        本文标题:setNeedsDisplay、setNeedsLayout、l

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