Ios 表格视图单元格的帧更改';s子视图赢得';在视图出现之前不会发生

Ios 表格视图单元格的帧更改';s子视图赢得';在视图出现之前不会发生,ios,uitableview,swift,frame,viewdidappear,Ios,Uitableview,Swift,Frame,Viewdidappear,我想用以下代码更改UITableViewCell在cellforrowatinexpath中设置的子视图: cellSubView.center = CGPointZero 打印出框架的坐标显示框架已成功更新,但视图仍显示在界面生成器中给定的位置 用以下代码覆盖viewdide函数可以解决此问题: override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) self.tableView.

我想用以下代码更改
UITableViewCell
cellforrowatinexpath
中设置的子视图:

cellSubView.center = CGPointZero
打印出框架的坐标显示框架已成功更新,但视图仍显示在界面生成器中给定的位置

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

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    self.tableView.reloadData()
}
但这将导致闪烁:当我更改表格中某个单元格的子视图位置时,该表格视图已经出现


如何在视图出现之前更改帧?如果使用autoLayout,请检查它是否自动创建约束。 如果是,则可以更改这些约束的常量。 如果您没有使用自动布局,请调用layoutIfNeeded并查看是否有任何更改。
不过,我的赌注是自动布局自动创建约束。

是否使用了自动布局?如果使用的是自动布局,请尝试在viewWillLayoutSubviews()委托方法中重新加载表。从iOS8开始,您实际上不应该在代码中调整帧。iOS8中对帧的代码更改通常会被系统为您添加的约束忽略或更改。相反,您应该使用约束。为
cellSubView
添加一个约束,使其在容器视图中居中。为什么不将其作为答案?