解決 iOS 11 下 UITableView 的 contentSize & contentOffset 失準問題

使用 iOS 11 測試時,發現 UITableView 的 contentSize 與 contentOffset 無法取得準確的值,導致某一些使用到這些屬性 (例如將表格捲動到指定的高度) 的功能出錯。

這其實是因為 iOS 11 預設會開啟表格的 Self-Sizing。當開啟了這個屬性以後,得到的表格 contentSize 只會是暫時的估算值,等於 estimatedRowHeight 乘上 cell 個數,而不會立即得到正確的 contentSize。當我們有功能去使用到這個值時就會發現和預期的效果不同。

解決方式是將表格的以下三個屬性設成 0,這樣就可以關閉 Self-Sizing 了

_tableView.estimatedRowHeight = 0;

_tableView.estimatedSectionHeaderHeight = 0;

_tableView.estimatedSectionFooterHeight = 0;


Reference:

https://forums.developer.apple.com/thread/81895

http://wetest.qq.com/lab/view/326.html

推荐阅读更多精彩内容

  • 《達爾文所未知的》解說詞 撰寫(Written):阿爾芒·馬裏耶(The Animal Mother) 翻譯(Tr...
    JENTSON阅读 839评论 0 1
  • 过去我是与早晨永远失之交臂的一个人,一天永远从中午开始,自从婚后就闲赋在家,打发时间就是一天里最重要的事情。直到家...
    大童小溪阅读 401评论 0 0
  • 问佛 我问佛:为何不给所有女子羞花闭月的容颜? 佛曰:那只是昙花一现,用来蒙蔽世俗的眼,没有什么美可以抵过一颗纯净...
    爱能创造奇迹阅读 421评论 0 2
  • 春风里 记得轻执我手 从城市走到原野 企图窥探遥远 阳光下 转过街角 泪珠滑落眼角 耳听得风中传来: 嗨,喜欢你呀...
    王非王阅读 45评论 0 0
  • 学习阶段五(update:2013-3-28 0:38):实现功能:为减少工作量,仅抓取所有tag页下前3页电影信...
    e19c64b8b8ea阅读 247评论 0 3