1. 程式人生 > >iOS使用shouldRasterize優化效能

iOS使用shouldRasterize優化效能

/* When true, the layer is rendered as a bitmap in its local coordinate 
 * space ("rasterized"), then the bitmap is composited into the 
 * destination (with the minificationFilter and magnificationFilter 
 * properties of the layer applied if the bitmap needs scaling). 
 * Rasterization occurs after the layer's filters and shadow effects 
 * are applied, but before the opacity modulation. As an implementation 
 * detail the rendering engine may attempt to cache and reuse the 
 * bitmap from one frame to the next. (Whether it does or not will have 
 * no affect on the rendered output.) 
 * 
 * When false the layer is composited directly into the destination 
 * whenever possible (however, certain features of the compositing 
 * model may force rasterization, e.g. adding filters). 
 * 
 * Defaults to NO. Animatable. */  
  
@property BOOL shouldRasterize;  
  
/* The scale at which the layer will be rasterized (when the 
 * shouldRasterize property has been set to YES) relative to the 
 * coordinate space of the layer. Defaults to one. Animatable. */  
  
@property CGFloat rasterizationScale;

如果在滾動tableView/collectionView時,每次都在cell中執行圓角設定,肯定會阻塞 UI,設定這個將會使滑動更加流暢。

當 shouldRasterize(光柵化)設成 true 時,layer被渲染成一個 bitmap,並快取起來,等下次使用時不會再重新去渲染了。

實現圓角本身就是在做顏色混合(blending),如果每次頁面出來時都blending,消耗太大,這時layer.shouldRasterize = YES,下次就只是簡單的從渲染引擎的 cache 裡讀取那張 bitmap,節約系統資源。