关于 layoutSubviews 视图重绘
引言:
当一个视图“认为”应该重新布局自己的子控件时,它便会自动调用自己的layoutSubviews方法,在该方法中“刷新”子控件的布局;
# 一. layout机制相关方法
- (CGSize)sizeThatFits:(CGSize)size
- (void)sizeToFit
- (void)layoutSubviews
- (void)layoutIfNeeded
- (void)setNeedsLayout
- (void)setNeedsDisplay
- (void)drawRect
# 二. layoutSubviews调用情况
init
初始化不会触发 layoutSubviews , 但是是用initWithFrame
进行初始化时,当rect的值不为CGRectZero
时,也会触发addSubview
会触发layoutSubviews- 设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
- 滚动一个
UIScrollView
会触发layoutSubviews - 旋转
Screen
会触发父UIView上的layoutSubviews事件 - 改变一个
UIView
大小的时候也会触发父UIView上的layoutSubviews事件