提高表視圖的效能
UITableView作為應用中最常用的視圖,它的效能最佳化問題幾乎是經常提及 。下面對在非網路訪問情況下的表視圖效能最佳化進行了主要的幾點說明:
1.自訂類或XIB檔案 時
在系統提供的樣式不能滿足我們的時候,我們經常會建立自訂類或者XIB檔案來自訂單元 格樣式。
在之前,我們通常通過loadNib的方式或者在代理方法中繼續使用老的方法來設定重用 ,管理緩衝池。在IOS6以後,我們可以通過註冊的方式在註冊儲存格甚至表頭視圖,讓系統來更高效的 進行管理。
2.InterfaceBuilder
據說有很多偏執的工程獅們堅持手打代碼來完成工程,討厭拖拖拽拽。 不過隨著IB的不斷強大,已經有越來越多的人喜歡上了使用IB來建立和管理介面。在新的Xcode5中,IB 又進步了不少。回到正題,儘管如此,在使用高效能的Cell時,還是推薦使用代碼來建立儲存格類。當 UITableViewCell擁有多個子視圖時,IOS的渲染機制會拖慢速度。重寫drawRect直接繪製內容的方式可 以提高效能,而不是在類初始化的時候初始化一些label或者imageview等。
3.圖層顏色問題
透明圖層對渲染效能會有一定的影響,系統必須將透明圖層與下面的視圖混合起來計算顏色,並 繪製出來。減少透明圖層並使用不透明的圖層來替代它們,可以極大地提高渲染速度。
4.渲染中 注意的問題
繪製時要儘可能的避免分配資源,比如UIFont,NSDateFormatter或者任何在繪製時 需要的對象,推薦使用類層級的初始化方法中執行分配,並將其儲存為靜態變數。
5.為代理方法 瘦身
我們經常能看到在項目中,
- (UITableViewCell *)tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
這個方法中的代碼多的嚇人,我 們可以講一些資料繫結到cell中,或者在有多個tableview的時候,將其綁定到其他的 tableviewcontroller中去。這樣可以方便維護和管理,其實也對程式運行效能有很大的協助。
手工繪製儲存格
下面就繪製一個表視圖儲存格,並在表視圖中顯示。