iOS 11 UITableView加載時(shí)亂跳問(wèn)題

正常reload-1.gif

異常reload-1.gif

正常reload-2.gif

異常reload-2.gif

異常:

經(jīng)過(guò)測(cè)試,異常只出現(xiàn)在iOS 11+的設(shè)備上,查了一些資料發(fā)現(xiàn)是 Self-Sizing 在 iOS 11 下默認(rèn)開(kāi)啟導(dǎo)致的.

異常原因:

執(zhí)行 reload操作時(shí) 會(huì)導(dǎo)致contentsize的重新計(jì)算

異常解析:

在 Self-Sizing 開(kāi)啟的狀態(tài)下,cell的行高是通過(guò)estimateRowHeight來(lái)計(jì)算的,contentsize也是不定的(只有cell顯示完的時(shí)候,contentsize才最終確定下來(lái))
當(dāng)此時(shí)執(zhí)行 reloadData操作時(shí),會(huì)調(diào)用 heightForRow 進(jìn)行布局,這就造成了contentSize的變化, 也就是tableview顯示區(qū)域的變化,進(jìn)而出現(xiàn)了亂跳的現(xiàn)象

解決方案:

關(guān)閉估算行高

tableView.estimatedRowHeight = 0;

當(dāng)使用到SectionHeader或者SectionFooter的時(shí)候

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

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

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,282評(píng)論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,685評(píng)論 1 32
  • 也許歷代文人騷客賦予了大西北太多的意象,使我對(duì)這片土地充滿向往。無(wú)論是依依惜別的《送元二使安西》,還是神思飛越...
    小妖哥兒閱讀 1,033評(píng)論 4 4
  • 11/33【33天寫作】 時(shí)間:2018年2月9日 主題:創(chuàng)業(yè),你準(zhǔn)備好了嗎? 當(dāng)國(guó)家提出“大眾創(chuàng)業(yè),萬(wàn)眾創(chuàng)新”的...
    南瓜他爸1983閱讀 169評(píng)論 0 0
  • 軟件:手機(jī)淘寶 搜索關(guān)鍵詞:桌布布藝 / 桌布布藝 棉麻(兩個(gè)選一) 卡位: 折扣和服務(wù):包郵 發(fā)貨地篩選:蘇州 ...
    Plong閱讀 286評(píng)論 0 0

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