一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯(lián)系我們 - 廣告服務 - 聯(lián)系電話:
您的當前位置: > 關注 > > 正文

View、Control、Layer對象的布局方法

來源:CSDN 時間:2023-01-06 08:22:25


(資料圖片僅供參考)

首先明確兩個概念:

UIWindow 對象        : 整個程序中視圖層次結(jié)構(gòu)中最頂層,充當一個容器類。UIViewController 對象 :viewController 中一個 view屬性是 view層次結(jié)構(gòu)中rootView,可以添加 view構(gòu)建復雜的視圖結(jié)構(gòu),通過生命周期方法loadView、viewDidLoad、viewWillAppear 等控制視圖聲明周期,因為他繼承于 UIResponder,所以可以響應和處理用戶事件。View、 Control 、 Layer 對象 :view可以通過 addSubView 和 removeFromSuperView等方法管理視圖層次結(jié)構(gòu),使用 layoutSubviews、layoutIfNeeded 和 setNeedsLayout 等方法布局 view的層次結(jié)構(gòu),當系統(tǒng)提供的 view無法滿足需要,可以重寫 drawRect 方法或者通過 layer屬性構(gòu)造更加復雜的圖形和動畫。              iOS中布局相關方法    - (CGSize)sizeThatFits:(CGSize)size;   - (void)sizeToFit;  sizeToFit 自動調(diào)用 sizeThatFits 方法,不能在子類中重寫 sizeToFit ----------------------------------------------------------------------    - (void)layoutSubViews;   - (void)layoutIfNeeded;   - (void)setNeedsLayout    layoutSubviews 在以下情況下會被調(diào)用 init初始化不會觸發(fā) layoutSubviews,但是 initWithFrame 進行初始化會被調(diào)用,當 rect 的值不為 CGRectZero 時,也會觸發(fā)。addSubView會觸發(fā) layoutSubviews設置 view的 frame 會觸發(fā) layoutSubviews滾動 ScrollView 時會觸發(fā) layoutSubviews旋轉(zhuǎn) Screen 會觸發(fā) 父view 上的 layoutSubviews改變一個 view的大小也會觸發(fā)父view的 layoutSubviews,所以重寫這個方法要調(diào)用 [super layoutSubViews] setNeedsLayout 標記需要刷新布局的控件,下一次運行循環(huán)的時候會刷新布局,異步調(diào)用 layoutIfNeeded——>layoutIfNeeded,立即刷新布局——>layoutSubViews --------------------------------------------------------------------- - (void)setNeedsDisplay;- (void)drawRect; setNeedsDisplay 方法,標記為重繪,異步調(diào)用 drawRect 方法 drawRect 方法,重寫此方法,執(zhí)行重繪任務 這個兩個方法都沒沒有遞歸,對 subViews 也不負責,只負責自己。 ---------------------------------------------------------------------

layoutSubviews對subviews重新布局

layoutSubviews方法調(diào)用先于drawRect

setNeedsLayout在receiver標上一個需要被重新布局的標記,在系統(tǒng)runloop的下一個周期自動調(diào)用layoutSubviews

layoutIfNeeded方法如其名,UIKit會判斷該receiver是否需要layout.根據(jù)Apple官方文檔,layoutIfNeeded方法應該是這樣的

layoutIfNeeded遍歷的不是superview鏈,應該是subviews鏈

drawRect是對receiver的重繪,能獲得context

setNeedDisplay在receiver標上一個需要被重新繪圖的標記,在下一個draw周期自動重繪,iphone device的刷新頻率是60hz,也就是1/60秒后重繪

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 主站蜘蛛池模板: 沂源县| 四子王旗| 湖口县| 威远县| 辰溪县| 阳江市| 东明县| 虹口区| 乐平市| 靖江市| 大洼县| 天镇县| 静海县| 宁阳县| 汽车| 开江县| 苍山县| 健康| 广平县| 赫章县| 安塞县| 汾西县| 阿尔山市| 深州市| 阳西县| 南京市| 苏尼特左旗| SHOW| 平远县| 建水县| 莱阳市| 辉县市| 衡东县| 定南县| 南投市| 太和县| 临沂市| 潢川县| 庆元县| 泗阳县| 通榆县|