UIButton的布局順序細節
什么時候呼叫imageRectForContentRect,titleRectForContentRect,contentRectForBounds,imageRectForContentRect,也是呼叫時機,首先梳理清楚幾個布局的規則:
- 改變view的size會觸發layoutSubviews
- 改變view的x或y不會觸發layoutSubviews
- 改變subview的size會觸發superview的layoutSubviews
- 改變subview的x或y不會觸發自己以及父視圖的layoutSubviews
記住這幾個布局時的呼叫順序:
- layoutSubviews
- backgroundRectForBounds:
- contentRectForBounds:
- imageRectForContentRect:
- titleRectForContentRect:
特別的:
- 在UIButton初始化階段會依次呼叫contentRectForBounds:,imageRectForContentRect:,這是在布局之前完成的,
- 改變title,image,background image都會來到進行綠色文字順序的布局,但不會觸發父視圖的布局,因為UIButton的尺寸未變,
- 綠色文字區域的呼叫并不是一次完成,而是復雜的多次呼叫完成的,它的順序是:3 -> 4 -> 3 -> 5 -> 3 -> 4
轉注出:https://www.cnblogs.com/xiaobajiu/p/11774496.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/7479.html
標籤:iOS
