表视图单元格子视图的框架更改将不会发生,直到视图确实出现

我想要更改一个UITableViewCell的子视图,当它在cellForRowAtIndexPath中设置时,使用下面的代码:

 cellSubView.center = CGPointZero 

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

用下面的代码重写viewDidAppear函数可以解决这个问题:

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

但是这会导致闪烁:当我改变它的一个单元格的子视图的位置时,表格视图已经出现了。

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

如果您使用autoLayout检查是否自动创build约束。 如果是,那么你可以改变这些约束的常量。 如果您不使用autoLayout,请调用layoutIfNeeded并查看是否更改了任何内容。 我的赌注是在autoLayout自动创build约束。