iOS资料汇总

UIView中的layoutSubviews和drawRect 

2016-04-05  本文已影响135人  纸简书生

1,想象一下,一个VC是盖在另一个VC,或者一个View遮盖了另外一个View,也许只遮盖了部分,那么被遮盖部分是无需显示到屏幕上的;再复杂一点,上层的View设置了半透明,那么这时下面的View也需要透一点点出来;
2,省电以及效率:显示在屏幕的东西其实都是系统通过一个个写像素点,这是个耗电,耗时间的事;为了省电,除非有视图变化,系统不会刷新页面;如果不是要求实时性特高,系统还会降低刷新频率;省电并提高效率的另一个途径就是只刷新屏幕中需要刷新的部分。

分为三组,它们之间相互独立,又相互关联

第一组:布局/定位相关:

第二组:显示相关:

第三组:约束相关

然后再来说说它们的关系,实际上这是一个view从计算大小,布局,到显示到屏幕上的过程,遵循一定的顺序:

注意:如果你每一次调用自定义layoutSubviews都会导致另一个布局传递,那么你将会陷入一个无限循环中。

1、init初始化不会触发layoutSubviews
2、addSubview会触发layoutSubviews
3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
4、滚动一个UIScrollView会触发layoutSubviews
5、旋转Screen会触发父UIView上的layoutSubviews事件
6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

上一篇下一篇

猜你喜欢

热点阅读