目前,我正在弄乱快速而动态的表格单元格高度。我在xcode6.1上为iOS8.1开发了一个简单的应用程序:https://github.com/ArtworkAD/DynamicCellTest
因此,要达到随单元格内容扩展的单元格高度,请执行以下操作:
Storyboard 中的
self.tableView.rowHeight = UITableViewAutomaticDimension
heightForRowAtIndex
方法需要最少的代码:
class MyTableViewController: UITableViewController {
var entries:Array<String> = [String]()
override func viewDidLoad() {
super.viewDidLoad()
//create dummy content
var i = 0
while i < 10 {
entries.append("\(i) Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor")
entries.append("\(i+1) Lorem ipsum dolor sit amet")
i = i + 2;
}
self.tableView.rowHeight = UITableViewAutomaticDimension
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.entries.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("basic_cell", forIndexPath: indexPath) as UITableViewCell
var label = cell.viewWithTag(13)
if let unwrappedLabel = label as? UILabel {
unwrappedLabel.text = self.entries[indexPath.row]
}
return cell
}
}
左图显示了以上代码的结果。单元格高度随标签的内容而增加,这一切都很好。但是,当您单击详细信息 View 的公开指示器并再次移回时,您将获得正确的图像。为什么会这样?
解决此问题的一个不好的方法是重写以下方法:
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
self.tableView.reloadData()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.tableView.reloadData()
}
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
self.tableView.reloadData()
}
这样就解决了上面的问题,但是这个解决方案似乎不对吗?它的副作用是,当调用
self.tableView.reloadData()
时,表 View 端口会跳到看起来不太好的第一个单元格。有人知道我在做什么错吗?随时克隆我的repo https://github.com/ArtworkAD/DynamicCellTest并进行测试。
最佳答案
添加此内容似乎可以解决旋转问题。
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
self.tableView.estimatedRowHeight = 36.5
}
但是,我还有另一种情况,即单元格中有4个标签,这具有相同的旋转问题,添加这个标签还不够,我最终用重新加载可见单元格替换了
self.tableView.estimatedRowHeight = 36.5
。关于ios - UITableView动态单元格高度在过渡或旋转时中断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26774126/