在uitableviewcell中使用uistackviews

时间:2017-03-02 12:05:25

标签: uitableview uistackview

我试图在tableview单元格中使用stackview。我的堆栈视图有两个水平对齐的标签。我在IB中添加了一个尺寸等级覆盖,以便垂直对齐标签以获得紧凑的宽度。

标签的对齐方式确实会发生变化,但单元格的高度不正确,直到我将单元格滚出并重新输入。

我的表视图指定使用以下方法计算单元格的高度:

  // Automatic row height calculation
  tableView.rowHeight = UITableViewAutomaticDimension
  tableView.estimatedRowHeight = 68.0 // set to whatever your "average" cell height is

所以,在iPhone SE中,我希望标签并排放置在横向上,而另一个放在纵向上。如果我以纵向模式启动我的应用程序,标签就像预期的那样,但当我旋转到横向时,它们会并排移动,但单元格仍然具有纵向高度。如果我在屏幕上滚动单元格,则会更正单元格高度。

我错过了什么?

请帮忙。

感谢。

1 个答案:

答案 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

谢谢,杰里!