source: https://juejin.im/post/5b7a9c466fb9a019eb43b0d5 卡頓優化 -CPU 盡量用輕量級的對象,比如用不到事件處理的地方,可以考慮使用CALayer取代UIView 不要頻繁地調用UIView的相關屬性,比如frame、bounds、transform等屬性,盡量減少不必要的修改 盡量提前計算好佈局,在有需要時一次性調整對應的屬性,不要多次修改屬性 Autolayout會比直接設置frame消耗更多的CPU資源 圖片的size最好剛好跟UIImageView的size保持一致 控制一下線程的最大並發數量 盡量把耗時的操作放到子線程 卡頓優化 -GPU 盡量避免短時間內大量圖片的顯示,盡可能將多張圖片合成一張進行顯示 盡量減少視圖數量和層次 減少透明的視圖(alpha 盡量避免出現離屏渲染 離屏渲染 在OpenGL中,GPU有2種渲染方式 On-Screen Rendering:當前屏幕渲染,在當前用於顯示的屏幕緩衝區進行渲染操作 Off-Screen Rendering:離屏渲染,在當前屏幕緩衝區以外新開闢一個緩衝區進行渲染操作 離屏渲染消耗性能的原因 需要創建新的緩衝區 離屏渲染的整個過程,需要多次切換上下文環境,先是從當前屏幕(On-Screen)切換到離屏(Off-Screen);等到離屏渲染結束以後,將離屏緩衝區的渲染結果顯示到屏幕上,又需要將上下文環境從離屏切換到當前屏幕 哪些操作會觸發離屏渲染? 光柵化,layer.shouldRasterize = YES 遮罩,layer.mask 圓角,同時設置layer.masksToBounds = YES、layer.cornerRadius大於0 考慮通過CoreGraphics繪製裁剪圓角,或者叫美工提供圓角圖片 陰影,layer.shadowXXX 如果設置了layer.shadowPath就不會產生離屏渲染 優化方案...