iOS開發(fā)之tableView滾動時因為cell上圖片漸現(xiàn)動畫造成的卡頓問題

Bug演示
bug現(xiàn)場.gif

從gif中可以看到我們是想實現(xiàn)這樣的效果:
tableViewCell上有圖片脱拼,有文字萎馅、價格等拼窥,但是我們現(xiàn)在關(guān)心的是圖片加載出現(xiàn)時的效果,就是那個圖片漸現(xiàn)的動畫裆泳。
我們先來實現(xiàn)這個動畫效果叹洲,當(dāng)然我這里用的是SDWebImage框架來加載網(wǎng)絡(luò)圖片,然后在SD框架中的UIImageView+WebCache.m這個分類的源碼里面的這個方法中進行修改:

image.png
我們在這個方法里面的這個位置加入我們想要的動畫效果:
image.png
可以看到我這里已經(jīng)把它源碼的部分給注釋了
image.png
好的工禾,接下來上我們自己要做漸現(xiàn)動畫的代碼

 wself.image = image;
 wself.alpha =0.0f;
 [UIView transitionWithView:wself duration:0.5 options:UIViewAnimationOptionCurveEaseIn animations:^{
                        wself.alpha =1.0f;
                    }];
 [wself setNeedsLayout];

或者

 wself.image = image;
 wself.alpha =0.0f;
 [UIView animateWithDuration:0.5 animations:^{
                        wself.alpha = 1.0f;
                    }];
 [wself setNeedsLayout];

于是這樣就會出現(xiàn)如上gif所示的bug了运提,主線程卡頓,造成tableView滑動不流暢闻葵,不跟手民泵,如果不注意的話也許不會發(fā)現(xiàn),但是app使用久了笙隙,一定會有注意到這樣的問題洪灯,十分影響用戶的體驗,有強迫癥的更是分分鐘想要卸載??竟痰。

作為一個注重用戶體驗的碼農(nóng)來說签钩,這種問題怎么能忍呢?所以我經(jīng)過分析終于找到解決方案坏快。

先來說說造成問題的原因吧铅檩。

問題分析
  1. UIView的動畫屬于transition動畫,transition動畫會另開一個動畫線程莽鸿,然后在主線程中執(zhí)行昧旨,如果此時進行UI操作,會打斷動畫的執(zhí)行祥得,比如tableView的reloadData兔沃,會讓動畫卡頓。詳見這篇文章级及;
  2. 而Core Animation系列是單獨開辟的線程執(zhí)行動畫乒疏,所以并不會影響主線程的UI響應(yīng)。
解決方案

既然問題找到了饮焦,那么解決起來就簡單了怕吴。
貼上修改后的代碼:

 CABasicAnimation *alphaAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
 alphaAnimation.fromValue = @0.0f;
 alphaAnimation.toValue = @1.0f;
 alphaAnimation.duration = 0.5f; 
 alphaAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
 [wself.layer addAnimation:alphaAnimation forKey:@""];
 [wself setNeedsLayout];
解決后效果
解決效果.gif

是不是順暢多了呢?當(dāng)然本人也可能有很多寫錯的地方县踢,只是為出現(xiàn)遇到同樣問題的iOS開發(fā)者提供一種解決方案转绷,歡迎指正和知識點糾正!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硼啤,一起剝皮案震驚了整個濱河市议经,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖爸业,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件其骄,死亡現(xiàn)場離奇詭異,居然都是意外死亡扯旷,警方通過查閱死者的電腦和手機拯爽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钧忽,“玉大人毯炮,你說我怎么就攤上這事∷屎冢” “怎么了桃煎?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長大刊。 經(jīng)常有香客問我为迈,道長,這世上最難降的妖魔是什么缺菌? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任葫辐,我火速辦了婚禮,結(jié)果婚禮上伴郁,老公的妹妹穿的比我還像新娘耿战。我一直安慰自己,他們只是感情好焊傅,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布剂陡。 她就那樣靜靜地躺著,像睡著了一般狐胎。 火紅的嫁衣襯著肌膚如雪鸭栖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天握巢,我揣著相機與錄音纤泵,去河邊找鬼。 笑死镜粤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的玻褪。 我是一名探鬼主播肉渴,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼带射!你這毒婦竟也來了同规?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎券勺,沒想到半個月后绪钥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡关炼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年程腹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儒拂。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡寸潦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出社痛,到底是詐尸還是另有隱情见转,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布蒜哀,位于F島的核電站斩箫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏撵儿。R本人自食惡果不足惜乘客,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望统倒。 院中可真熱鬧寨典,春花似錦、人聲如沸房匆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浴鸿。三九已至井氢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岳链,已是汗流浹背花竞。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掸哑,地道東北人约急。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像苗分,于是被迫代替她去往敵國和親厌蔽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評論 25 707
  • 醫(yī)院外三個科住進了三個受傷的病人摔癣。 他們受的傷有些相似奴饮,都是椎體壓縮性骨折纬向,住到了同一家醫(yī)院的同一病室。他們受傷的...
    li成林閱讀 474評論 3 4
  • 如果說石頭從小欺負賴可是一種惡習(xí)的話戴卜,那么小寶從小到大被石頭逾条、賴可和我欺負就是我們仨的特殊愛好了。其實我們?nèi)齻€小時...
    黑狗小白閱讀 1,013評論 0 0
  • 信息來源:wind陸家嘴早餐/一張圖研報/羅博白蔡燉資管/蔡行之友金融服務(wù)平臺/未名宏觀研究 1.基本面+海外 ◆...
    阿泰想自由閱讀 244評論 0 0