光柵化概念:將圖轉化爲一個個柵格組成的圖象。
光柵化特點:每個元素對應幀緩衝區中的一像素。
shouldRasterize = YES
在其他屬性觸發離屏渲染的同時,會將光柵化後的內容緩存起來,如果對應的layer及其sublayers沒有發生改變,在下一幀的時候可以直接複用。shouldRasterize = YES,這將隱式的創建一個位圖,各種陰影遮罩等效果也會保存到位圖中並緩存起來,從而減少渲染的頻度(不是矢量圖)。
相當於光柵化是把GPU的操作轉到CPU上了,生成位圖緩存,直接讀取複用。當你使用光柵化時,你可以開啓“Color Hits Green and Misses Red”來檢查該場景下光柵化操作是否是一個好的選擇。綠色表示緩存被複用,紅色表示緩存在被重複創建。
如果光柵化的層變紅得太頻繁那麼光柵化對優化可能沒有多少用處。位圖緩存從內存中刪除又重新創建得太過頻繁,紅色表明緩存重建得太遲。可以針對性的選擇某個較小而較深的層結構進行光柵化,來嘗試減少渲染時間。
注意:
對於經常變動的內容,這個時候不要開啓,否則會造成性能的浪費
例如,我們日程經常打交道的TableViewCell,因爲TableViewCell的重繪是很頻繁的(因爲Cell的複用),如果Cell的內容不斷變化,則Cell需要不斷重繪,如果此時設置了cell.layer可光柵化。則會造成大量的離屏渲染,降低圖形性能。