layoutSubviews
-
init 初始化不会触发 layoutSubviews ;
-
addSubview 会触发 layoutSubviews ;
-
设置 view 的 frame 会触发 layoutSubviews,前提是 frame 的值设置前后发生了变化;
-
UIScrollView 滚动会触发 layoutSubviews ;
-
旋转 Screen 会触发父 UIView 上的 layoutSubviews ;
-
改变一个 UIView 大小的时候也会触发父 UIView 上的 layoutSubviews ;
-
直接调用 setLayoutSubviews ;
drawRect
-
如果在 UIView 初始化时没有设置 rect 大小,将直接导致 drawRect 不被自动调用;
-
在 Controller->loadView, Controller->viewDidLoad 两方法之后会掉用 drawRect ;
-
在调用 sizeToFit 计算出 size 后系统会自动调用 drawRect: 方法;
-
通过设置 contentMode 属性值为 UIViewContentModeRedraw。那么将在每次设置或更改 frame 的时候自动调用 drawRect: ;
-
直接调用 setNeedsDisplay,或者 setNeedsDisplayInRect: 触发 drawRect:,但是有个前提条件是 rect 不能为 0。