女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>通訊/手機編程>

iOS滑動優化

大小:0.3 MB 人氣: 2017-09-25 需要積分:1

iOS優化(三)沒錯我還是滑動優化2017-07-05 11:58iOS  近期把滑動優化的一些經驗整理了一下,在公司做了一次技術分享,和我之前的文章有一小部分重疊。現摘要如下,希望大家不吝賜教,共同討論進步。

一。滑動優化的玄學

為什么說是玄學呢,因為大部分情況下的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結果,不多次創建,及時釋放。

做過類似日歷的同學應該都懂??

8.圖片解碼:

解決方案:CALayer 被提交到 GPU 前,CGImage 中的數據才會得到解碼,GPU執行,卡主線程。常見的做法是在后臺線程先把圖片繪制到 CGBitmapContext 中,然后從 Bitmap 直接創建圖片。

SDWebImage/YYImage等圖片庫都是這么做的,有興趣的同學可以去看下源碼。如果你是自己做圖片下載,就要考慮到相關優化。

二.cell高度預計算/緩存

解決方案:。緩存NSDateFormatter結果,不多次創建,及時釋放。

做過類似日歷的同學應該都懂??

一般情況下,不要用estimatedRowHeight,不然容易鬼畜;

systemLayoutSizeFittingSize:這個方法,就是大部分cell布局庫采用的方法,只要從上至下布局全部生效,就能計算高度,不要多次調用;

由于UITableView繪制過程中多次調用繪制,所以緩存高度計算結果,可以有效的增加滑動流暢度;

當cell高度改變,記得及時替換緩存;

三。離屏渲染

觸發條件:CALayer 的 border、圓角、陰影、遮罩(mask),CASharpLayer 的矢量圖形顯示。

主要問題:GPU占滿,CPU空閑

解決方法:

1.開啟CALayer.shouldRasterize ,轉嫁到CPU上;

2.粗暴畫圖/截圖實現border和圓角;

3.砍死設計師。

最近拖延癥有點厲害,這篇文章想寫了很久都沒寫出來,我先摘要一部分思路出來。

iOS滑動優化

曾經的需求是這樣的:

?

注意需求的圈和頭像之間是有空隙的

初期方案是圖片下載完成后,裁成圓形,然后外面用貝塞爾畫一個圈,根據不同的UI緩存不同多個帶圈兒的圖;

然而。。.神奇的產品第二版給我整出了無數個各種不同大小、間距、透明度的圈。這樣就意味著我得緩存無數帶著各色圈兒的圖。
iOS滑動優化

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?