setNeedsDisplay、setNeedsLayout、layoutIfNeed

setNeedsDisplay会调用drawRect方法重画页面

setNeedsLayout页面不会发生变化,只有通过调用layoutIfNeed调用layoutSubviews,页面才会发生变化。

 

一、什么情况下会调用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方法。

posted @ 2017-12-29 15:31  一坨☁️  阅读(1153)  评论(0编辑  收藏  举报