table 视图单元格的子视图的框架更改在视图出现之前不会发生

Frame change of table view cell's subview won't take place until view did appear

我想在 cellForRowAtIndexPath 中使用以下代码更改 UITableViewCell 的子视图:

cellSubView.center = CGPointZero

打印出框架的坐标显示框架更新成功,但视图仍显示在界面构建器中指定的位置。

使用以下代码覆盖 viewDidAppear 函数可以解决此问题:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    self.tableView.reloadData()
}

但这会导致闪烁:当我更改其中一个单元格的子视图位置时,table 视图已经出现。

如何在视图出现之前更改框架?

如果您使用了 autoLayout,请检查它是否自动创建约束。 如果是,那么您可以改为更改这些约束的常量。 如果您没有使用 autoLayout,请调用 layoutIfNeeded 并查看是否有任何变化。 不过,我敢打赌 autoLayout 会自动创建约束。