我试图在tableview单元格中使用stackview。我的堆栈视图有两个水平对齐的标签。我在IB中添加了一个尺寸等级覆盖,以便垂直对齐标签以获得紧凑的宽度。
标签的对齐方式确实会发生变化,但单元格的高度不正确,直到我将单元格滚出并重新输入。
我的表视图指定使用以下方法计算单元格的高度:
// Automatic row height calculation
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 68.0 // set to whatever your "average" cell height is
所以,在iPhone SE中,我希望标签并排放置在横向上,而另一个放在纵向上。如果我以纵向模式启动我的应用程序,标签就像预期的那样,但当我旋转到横向时,它们会并排移动,但单元格仍然具有纵向高度。如果我在屏幕上滚动单元格,则会更正单元格高度。
我错过了什么?
请帮忙。
感谢。
答案 0 :(得分:1)
行。看起来可能存在合法的错误,但我继续进行一些挖掘,因为堆栈视图更容易使用。最后,在https://www.raywenderlich.com得到答案。
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
DispatchQueue.main.async {
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
}
Yeap !,在主队列中异步包装开始/结束更新调用可以正确计算单元格的高度。永远不会想到它,因为traitCollectionDidChange()已经在主队列中运行。
有关详细信息,请参阅Using uistackviews in uitableviewcell。
谢谢,杰里!