前言
app頁面優化對小編來說一直是難題,最近一直在不斷的學習和總結 ,發現app頁面優化說到底離不開view的繪製和渲染機制。本文將詳細給大家介紹關於ios布局渲染之uiview方法呼叫時機的相關內容,下面話不多說了,來一程式設計客棧起看看詳細的介紹吧。
一、約束
- (void)updateconstraints ns_**ailable_ios(6_0) ns_requires_super;
何時觸發如下所示:
1、initwithframe時候呼叫,但是要求重寫以下方法,並返回yes。
+ (bool)requiresconstraintbasedlayout ns_**ailable_ios(6_0);
2、標記為需要更新,下次drawing cycle自動呼叫。當約束改變時,下次render loop還會自動呼叫layoutsubviews(布局)
- (void)setneedsupdateconstraints ns_**ailable_ios(6_0);
3、如果有需要更新的標記,立即呼叫。當約束改變程式設計客棧時,下次render loop還會自動呼叫layoutsubviews(布局)
-qdobnewa (void)updateconstraintsifneeded ns_**ailable_ios(6_0);
二、布局
- (void)layoutsubviews;
1、何時觸發如下所示:
initwithframe時候呼叫,但是rect的值不能為cgrectzero。
- (instancetype)initwithframe:(cgrect)frame ns_designated_initializer;qdobnewa
2、標記為需要布局,下次drawing cycle自動呼叫。
- (void)setneedslayout;
3、如果有需要布局的標記,立即呼叫。
- (void)layoutifneeded;
4、自己的frame發生改變時,約束也會導致frame改變。
@property(nonatomic) cgrect frame;
5、新增子檢視或者子檢視frame改變時,約束也會導致frame改變。
6、檢視被新增到uiscrollview,滾動uiscrollview。
三、顯示
- (void)drawrect:(cgrect)rect;
何時觸發如下所示:
1、initwithframe時候呼叫,但是rect的值不能為cgrectzero。
qdobnewa- (instancetype)initwithframe:(cgrect)frame ns_designated_initializer;
2、標記為需要顯示,下次drawing cycle自動呼叫。
- (void)setneedsdisplay;
總結本文標題: ios布局渲染之uiview方法的呼叫時機詳解
本文位址:
iOS開發之UIView和CALayer的區別
最大的區別是 圖層 calayer 不會直接渲染到螢幕上。uiview是ios系統中介面元素的基礎,所有介面元素都是繼承自它。它本身完全是由coreanimation來實現。真正的繪圖部分,是由乙個calayer類來管理。乙個uiview上可以由n個calayer,每個calayer顯示一種東西,增...
iOS之離屏渲染
on screen rendering 意為當前螢幕渲染,指的是gpu的渲染操作是在當前用於顯示的螢幕緩衝區中進行。off screen rendering 意為離屏渲染,指的是gpu在當前螢幕緩衝區以外新開闢乙個緩衝區進行渲染操作。特殊的離屏渲染 如果將不在gpu的當前螢幕緩衝區中進行的渲染都稱為...
IOS 開發之UIView動畫的例項詳解
ios 動畫例項詳解 ios動畫的實現方式多種多樣,這裡就只記錄一下 beginanimations context 在你呼叫 beginanimations context 方法來啟動乙個動畫後,動畫並不會立即被執行,直 到你呼叫 uiview 類的 commitanimations 類方法。你對...