iOS優化沒錯我還是滑動優化
近期把滑動優化的一些經驗整理了一下,在公司做了一次技術分享,和我之前的文章有一小部分重疊。現摘要如下,希望大家不吝賜教,共同討論進步。
一.滑動優化的玄學
為什麼說是玄學呢,因為大部分情況下的APP,用不到這些優化的點,過早的優化是惡魔,當真正出現性能問題的時候,再考慮這些方面的優化。
1.多個透明元素重疊顯示的性能問題。
解決方案:合并成一張圖顯示
原理:CPU方面,減少了UIKit的創建消耗,GPU方面,避免了合成渲染產生的消耗。
AsyncDisplayKit(現在叫Texture),針對多個透明元素的重疊,預合并無點擊響應,不改變動畫的圖層。
Texture的保持流暢的原理:UIKit不是線程安全的,所以必須在主線程改動。Texture利用中間變數存儲改動,保證線程安全,在合適的機會將並發操作同步到主線程。
暫時不用Texture的原因:需要用Texture Node Container替換UIKit元素,成本較大。
2.靜態cell、多圖待載入的優化
解決方案:合并成一張圖顯示;
原理:提升I/O速度,一個大文件的讀取速度,通常比多個小文件要快。
3.展示適合界面尺寸圖片,不進行拉伸縮放。
解決方案:從伺服器拉取合適尺寸的圖片(例如七牛的服務就帶裁剪/壓縮參數);
原理:過大圖片對內存消耗巨大(圖片佔用內存 = 圖像高×圖像寬×像素位數);不符合UIImageView尺寸的圖片,進行重新縮減/放大尺寸的消耗是非常巨大的。
4.imageNamed和imageWithContentsOfFile
這個知道的人比較多,因為緩存圖片的消耗通常是肉眼可見的多。 常用的元素例如icon之類的,採用imageNamed:,系統會有緩存。 如果是較大或者不常用的圖片資源,採用imageWithContentsOfFile:。
5.減少autolayout的使用
解決方案:頁面元素多的時候,減少autolayout布局,採用frame。
原理:元素多時,autolayout的消耗非常驚人(http://pilky.me/36/) ,之前看過搜狗的iOS分享,搜狗輸入法鍵盤彈出狂卡即是此原因;
6.獲取文件大小
解決方案:不要使用NSFileManager,用C的stat來獲取文件信息。
實例:獲取一個目錄下所有文件大小,進行多次遞歸計算,stat幾乎瞬間完成,NSFileManager耗時較長。
7.NSDateFormatter產生較大消耗
解決方案:.緩存NSDateFormatter結果,不多次創建,及時釋放。
做過類似日曆的同學應該都懂
※對症下藥——六種連衣裙的選鞋秘籍!
※生活要與花草相伴,就算沒庭院也沒陽台!
※米兔積木機器人新品發布:最強陸戰軍團,太炫酷了
※這對小情侶想把那個沒穿衣服的胖子P掉,結果……虐心啊
※女子沒穿裙子躺沙灘,結果……
TAG:輕芒 |
※黑鯊遊戲手機系統更新 優化觸摸屏超慢速滑動效果
※總是滑動,點擊iPhone怕損壞手機,會不會呢??
※越獄插件:調整iPhone X後台工作方式,上滑動就能關閉APP!
※滑動玻璃鷗翼門 Giugiaro新概念車帥到沒朋友
※雙面「V」形滑動升降攝像頭?真心被OPPO這項新專利嚇到了
※為什麼WP的軟體很少滑動返回?
※雙面「V」形滑動升降攝像頭?真心被OPPO這項新專利嚇到了!
※越獄插件:讓iPhone X也能滑動鎖屏或待機!
※網傳OPPO Find X滑動式鏡頭專利曝光,真的很有料
※某些iOS應用會追蹤用戶的點擊或者滑動
※非摺疊,非滑動!LG或將推出滾動屏設備
※行業人士一語擊中滑動鏡頭手機要害,vivo、OPPO、小米、榮耀你們認可嗎?
※黑鯊遊戲手機即將獲更新:優化觸摸屏超慢速滑動效果
※會投影的智能手錶LumiWatch來了,可在手臂自由地滑動並控制其中的應用
※iPhone X滑動式外接鏡頭,可快速的進行鏡頭更換!
※OPPO FindX真機亮相:曲面全景屏+滑動攝像頭,顏值完美了!
※新型解壓玩具,仿皂莢外形,磁力吸附,滾動彈撥旋轉滑動1秒變換
※能盤上癮的玩物,姿勢多變,滾動彈撥旋轉滑動,實在停不下來
※一加7有什麼新特性?劉作虎:滑動效果堪比iPad Pro
※PPT都3D了,你還不知道什麼是平滑動畫?