我正在嘗試爲我的tableview使用新的自動大小。林這樣做:在Swift中旋轉設備時iOS8 tableviewcell高度發生變化
tableView.rowHeight = UITableViewAutomaticDimension
我有一個多-的UILabel在我的UITableViewCell有一些是工作出色的約束;當我在橫向和縱向上輸入tableview時,行的高度是動態的!真棒!
...但是當我旋轉設備時,行得到基本高度(即44)。
我加入此行:
override func willAnimateRotationToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval)
{
self.tableView.reloadData()
}
而問題就消失了。但是,這是否真的有必要?必須有更好的方法來解決這個問題?
編輯:
我剛剛發現,當我刪除一行在這樣的表視圖出現相同的問題:
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
我失去了一些東西在這裏?爲什麼不開箱即用?再次
編輯:
我現在做的是這樣的:
self.tableView.estimatedRowHeight = 44
tableView.rowHeight = UITableViewAutomaticDimension
然後,當我的數據是從API獲取:
self.tableView.reloadData()
self.tableView.beginUpdates()
self.tableView.endUpdates()
這似乎涵蓋所有迄今爲止我已經測試過的情況,但它看起來很詭異!如果沒有開始/結束更新,單元格會在第一次加載時顯示一些非常怪異的高度。 (但是當旋轉裝置時,細胞正確地調整它們的高度。)
這一切似乎都是如此的錯誤。我沒有找到正確覆蓋這些案例的單一指南。
我發現這篇文章是非常有用的,不知道它是否解決了你的特殊問題。但在iOS8中,您不必使用willAnimateRotationToInterfaceOrientation,也不必重新加載數據:http://captechconsulting.com/blog/tyler-tillage/ios-8-tutorial-series-auto-sizing-table-cells – dirkgroten 2014-11-07 12:15:25
嗨,根據您的問題可以請你告訴我你是否在uitableviewcell中使用了自動佈局約束,並且你是否需要根據uilabel中的內容來設置高度,或者是否需要它始終爲44.請同時添加您面對的問題的圖像將對識別你的問題。 – 2014-11-09 11:33:52