iOS 滑動性能優(yōu)化

一竭望、 減少圖層的Blend操作

展示半透明的view风科,設備會把當前圖層和背景圖層進行alpha疊加,這是一項很耗性能的一件事超埋。如果動畫中每一幀都做疊加哲思,性能的損耗是很嚴重洼畅。

  1. UIView的背景色避免使用clearColor
    UIView記得設置成和SuperView相同的顏色
    動作雖小,效果卻好
    尤其是在需要滑動的場景

  2. 控件貼圖避免使用帶alpha的圖片
    視覺給出的貼圖最好不帶Alpha通道
    如果必須使用Alpha棚赔,則主動去Alpha帝簇,提前和背景色合成為不含Alpha的圖片
    針對同一場景圖片合成只需要做一次
    一次合成徘郭,長期使用

  3. UIImageView 使用時避免半透明
    Disable alpha blending except where needed. Unless you are intentionally working with images that contain transparency (drawing UI elements, for example), you should generally mark the view as opaque by checking Opaque checkbox in the attributes inspector, or setting the opaque property on the view itself.

UIImageView的半透明取決于以下幾項:

顯示的圖片
View的opaque屬性的值
View的alpha值
View的背景色
An opaque view is expected to fill its bounds with entirely opaque content—that is, the content should have an alpha value of 1.0. If the view is opaque and either does not fill its bounds or contains wholly or partially transparent content, the results are unpredictable. You should always set the value of this property to NO if the view is fully or partially transparent.

規(guī)則如下:

當Opaque屬性為YES的時候,imageView的alpha屬性會被忽略丧肴,圖層是否半透明取決于圖片和imageView本身的背景色的疊加結果残揉。
如果疊加結果圖全部不透明,則圖層不透明芋浮,不會觸發(fā)blend操作冲甘。
如果疊加結果中出現半透明區(qū)域,則整個圖層都會變成不透明途样,會觸發(fā)blend操作江醇。
如果Opaque屬性為NO的時候,圖層是否半透明取決于圖片和imageView的multiplied疊加結果確定何暇。
簡單理解陶夜,如果可能盡量:
設置Opaque為YES
背景色設置為不含alpha的顏色
alpha值最好也是1(不透明)。
適用場景
通用優(yōu)化規(guī)則裆站,不會造成副作用

二条辟、適當使用Rasterize

針對內容比較固定的Cell,建議采用光柵化宏胯,讓Core Animation框架幫我們完成圖層的混合羽嫡,生成一個靜態(tài)圖,優(yōu)化幀率肩袍。

適用場景
UITableView & UICollectionView & UIScrollView中內容變化不頻繁的Cell
注:此優(yōu)化需要Profile杭棵,使用Core Animation工具中的“ColorHitsGreenandMissesRed”工具調優(yōu)
如果使用不當,可能適得其反

三氛赐、避免圖片資源的重采樣

Image views can perform two operations that are relatively expensive performance-wise: scaling the image and alpha compositing the image with lower layers.

減少圖片資源的重采樣是一個費時給力的過程魂爪,涉及到插值算法,以雙線性插值為例艰管,每插值一個點需要用到周圍四個點的像素值滓侍,運算量可見一斑。

直接對于UIImageView設置一個大圖牲芋,在實際展示的時候會在主線程完成重采樣的過程撩笆,耗時耗內存。

如何避免缸浦?
網絡圖片資源
請求接口時夕冲,服務端根據場景返回尺寸盡可能接近展示的圖片資源。
此舉既可以節(jié)省流量餐济,又可以節(jié)省重采樣的時間耘擂。
本地圖片資源
有可能的話,針對不同場景放置多個尺寸的圖片資源
針對應用場景生成一個適用于使用場景尺寸的圖片資源絮姆,并在該場景中生成的圖片
適用場景
  所有需要使用圖片的場景都可以使用此方案優(yōu)化醉冤,無副作用秩霍。

總結

滑動性能優(yōu)化這塊兒涉及到的知識還是挺多的,不要盲目蚁阳,過早的優(yōu)化铃绒。使用Instrument找出瓶頸,然后合理使用不同的方案螺捐。性能優(yōu)化有很多奇淫技巧颠悬,但通常做到上面幾個大的點,基本上性能就能接受了定血。

對于TableView & Collection View這塊兒還有一個很有效的優(yōu)化手段赔癌,在快速滑動的時候,忽略中間快速閃過的Cell澜沟,直接借用UIScrollView的delegate判斷加載滑動停止目標區(qū)域的Cell的內容灾票。實踐證明此方法效果還是很明顯的,具體例子可以網上搜一下茫虽。

Profile -> 優(yōu)化 -> Profile

一直重復上面的流程刊苍,直到達到預期為止。

最后重要的事情說三遍:

Profile一定請使用真機濒析,最好使用Release模式正什,以達到最真實的效果。
  Profile一定請使用真機号杏,最好使用Release模式婴氮,以達到最真實的效果。
  Profile一定請使用真機馒索,最好使用Release模式莹妒,以達到最真實的效果。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末绰上,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子渠驼,更是在濱河造成了極大的恐慌蜈块,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迷扇,死亡現場離奇詭異百揭,居然都是意外死亡,警方通過查閱死者的電腦和手機蜓席,發(fā)現死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門器一,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人厨内,你說我怎么就攤上這事祈秕∶煜停” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵请毛,是天一觀的道長志鞍。 經常有香客問我,道長方仿,這世上最難降的妖魔是什么固棚? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮仙蚜,結果婚禮上此洲,老公的妹妹穿的比我還像新娘。我一直安慰自己委粉,他們只是感情好黍翎,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著艳丛,像睡著了一般匣掸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氮双,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天碰酝,我揣著相機與錄音,去河邊找鬼戴差。 笑死送爸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的暖释。 我是一名探鬼主播袭厂,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼球匕!你這毒婦竟也來了纹磺?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤亮曹,失蹤者是張志新(化名)和其女友劉穎橄杨,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體照卦,經...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡式矫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了役耕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片采转。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瞬痘,靈堂內的尸體忽然破棺而出故慈,到底是詐尸還是另有隱情板熊,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布惯悠,位于F島的核電站邻邮,受9級特大地震影響,放射性物質發(fā)生泄漏克婶。R本人自食惡果不足惜筒严,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望情萤。 院中可真熱鬧鸭蛙,春花似錦、人聲如沸筋岛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽睁宰。三九已至肪获,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柒傻,已是汗流浹背孝赫。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留红符,地道東北人青柄。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像预侯,于是被迫代替她去往敵國和親致开。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內容