解決 tableview 刷新閃一下或抖動的問題

我們知道 tableview 刷新有分全局刷新和指定區(qū)域刷新。
  • 全局刷新- (void)reloadData;
  • 指定區(qū)域刷新有以下兩個方法。
- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);

- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
tableview或者是collectionview,reload時默認會有一個隱式的Fade動畫,有時視覺上會有閃一下的情況。指定區(qū)域刷新時,只要將UITableViewRowAnimation設為UITableViewRowAnimationNone即可取消隱式動畫。
那么全局刷新時,該如何取消隱式動畫?
方法一
如果你的tableview的行高是根據(jù)數(shù)據(jù)自適應的,那么在設置完estimatedRowHeight后,在需要reloadData的地方加上。
[self.tableView beginUpdates];
[self.tableView endUpdates];
(ps: 以上方法也適用于 tableview 刷新時因預估行高和實際行高不一致情況下抖動的問題,有些人視覺上可能也覺得會閃一下。)
方法二
使用UIView類方法去取消隱式動畫,在 block 回調(diào)里去reloadData。該方法對collectionview刷新同樣有效。
+ (void)performWithoutAnimation:(void (NS_NOESCAPE ^)(void))actionsWithoutAnimation NS_AVAILABLE_IOS(7_0);

參考鏈接:https://stackoverflow.com/questions/15196927/reload-uitableview-with-new-data-caused-flickering

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、簡介 <<UITableView(或簡單地說,表視圖)的一個實例是用于顯示和編輯分層列出的信息的一種手段 <<...
    無邪8閱讀 10,962評論 3 3
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,674評論 1 32
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,424評論 4 61
  • 身為女人,穿搭中怎能少了裙裝,它可以讓女性的氣息自然流淌,盡情的訴說女性的柔軟和美麗! 在眾多的裙子當中,今天特別...
    景云6786閱讀 702評論 0 4
  • 重男輕女,出生就被扔給爺爺奶奶。只有過年才會回來。回來也不看我,更不要提買衣服買吃的給壓歲錢了。我媽還會罵我爺爺奶...
    醒目鳥閱讀 2,503評論 0 49

友情鏈接更多精彩內(nèi)容