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 会自动创建约束。
我想在 cellForRowAtIndexPath
中使用以下代码更改 UITableViewCell
的子视图:
cellSubView.center = CGPointZero
打印出框架的坐标显示框架更新成功,但视图仍显示在界面构建器中指定的位置。
使用以下代码覆盖 viewDidAppear
函数可以解决此问题:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.tableView.reloadData()
}
但这会导致闪烁:当我更改其中一个单元格的子视图位置时,table 视图已经出现。
如何在视图出现之前更改框架?
如果您使用了 autoLayout,请检查它是否自动创建约束。 如果是,那么您可以改为更改这些约束的常量。 如果您没有使用 autoLayout,请调用 layoutIfNeeded 并查看是否有任何变化。 不过,我敢打赌 autoLayout 会自动创建约束。