layoutSubviews
系統(tǒng)方法川尖,不能主動調(diào)用,重寫父類此方法
自己通常的用法是在自定義view中或者自定義cell中茫孔,重寫父類的方法叮喳,來對它的子view進行位置、大小的設置缰贝。
layoutSubviews在以下情況下會被調(diào)用:
1馍悟、init初始化不會觸發(fā)layoutSubviews
但是是用initWithFrame 進行初始化時,當rect的值不為CGRectZero時,也會觸發(fā)
2揩瞪、addSubview會觸發(fā)layoutSubviews
3赋朦、設置view的Frame會觸發(fā)layoutSubviews,當然前提是frame的值設置前后發(fā)生了變化
4、滾動一個UIScrollView會觸發(fā)layoutSubviews
5宠哄、旋轉(zhuǎn)Screen會觸發(fā)父UIView上的layoutSubviews事件
6壹将、改變一個UIView大小的時候也會觸發(fā)父UIView上的layoutSubviews事件
You should not call this method directly. If you want to force a layout update, call the setNeedsLayout method instead to do so prior to the next drawing update. If you want to update the layout of your views immediately, call the layoutIfNeeded method.
setNeedsLayout? 標記為需要重新布局,在下一個繪畫周期時毛嫉,會自動調(diào)用layoutSubviews诽俯,進行重新布局。
layoutIfNeeded? 如果有需要重新布局的標記承粤,就立即自動調(diào)用layoutSubviews暴区,進行布局。如果沒有標記辛臊,不會調(diào)用layoutSubviews仙粱。
如果想要立即重新布局,可以先調(diào)用setNeedsLayout彻舰,設置標記伐割,然后調(diào)用layoutIfNeeded,進行自動觸發(fā)layoutSubviews刃唤,進行布局隔心。