【发布时间】:2015-06-11 22:37:52
【问题描述】:
我有一些奇怪的行为。我正在设置一个 tableHeaderView 如下:
class MyTableViewController: UITableViewController {
...
override func viewDidLoad() {
...
var myHeaderView = NSBundle.mainBundle().loadNibNamed("MyHeaderView", owner: self, options: nil).first as? MyHeaderView
tableView.tableHeaderView = myHeaderView
...
}
...
}
当视图第一次加载时,它会正确显示。自动布局给它的高度为30,并且表头高度也随之而来。
当我转到另一个视图时(通过点击UITableView 中的单元格),然后点击返回按钮,UITableView 也会以正确的高度绘制。
但是,在所有内容正确加载后的一瞬间,tableViewHeader 会自行调整大小并覆盖第一个单元格的一部分。这非常令人沮丧,因为我似乎无法弄清楚它发生在哪里。
我添加了一些日志行。这是点击后退按钮后的样子:
viewWillAppear: header frame is Optional((0.0, 0.0, 375.0, 30.0))
viewDidLayoutSubviews: header frame is Optional((0.0, 0.0, 375.0, 30.0))
viewDidAppear: header frame is Optional((0.0, 0.0, 375.0, 30.0))
viewDidLayoutSubviews: header frame is Optional((0.0, 0.0, 375.0, 49.0))
viewDidLayoutSubviews: header frame is Optional((0.0, 0.0, 375.0, 49.0))
据我所知,我无法控制的某些事情在viewDidAppear 和viewDidLayoutSubviews 之间改变了tableViewHeader 的高度。我无法更正 viewDidLayoutSubviews 中的大小,因为它会触发无限循环。
我不知道该怎么做才能解决这个问题。在视图重新出现之前,一切似乎/表现都很好。它还会在向/从横向过渡时破坏正确的高度。
【问题讨论】:
标签: ios uitableview