主要可以參考 WWDC 2014 419
CALayer shouldRasterize
cache 大小約 2.5x 螢幕 且暫存時間為 100 ms
盡量用於高成本靜態資料 跟 複雜的 View Hierachy
CALayer allowsGroupOpacity
少一點 offscreen pass
less blending
少點圖片格式轉換(有些格式 GPU 不吃,需要先從 CPU 轉換)
Instruments
Core Animation
Blended Layer : 紅色越少越好(紅色代表要用 GPU 進行混色)
hit green and miss red : 指 Rasterize cache,靜止時該為綠色(hit),紅色則是 miss cache
copied images : cyan 色代表,GPU 不吃圖片格式,圖片是從 CPU 過來的
misaligned images : yellow -> scale, purple -> not pixel aligned
offscreen-Render Yellow : 越黃的話代表,進行的 Render Pass 越多
fast-path blue : 藍色越多好(藍色指用hardware進行)
flash updates region : 黃色指最近更新區域,越少 CPU GPU 負載較輕
避免图层混合
确保控件的opaque属性设置为true,确保backgroundColor和父视图颜色一致且不透明。
如无特殊需要,不要设置低于1的alpha值。
确保UIImage没有alpha通道。
避免临时转换
确保图片大小和frame一致,不要在滑动时缩放图片。
确保图片颜色格式被GPU支持,避免劳烦CPU转换。
慎用离屏渲染
绝大多数时候离屏渲染会影响性能。
重写drawRect方法,设置圆角、阴影、模糊效果,光栅化都会导致离屏渲染。
设置阴影效果是加上阴影路径。
滑动时若需要圆角效果,开启光栅化。