【发布时间】:2015-08-11 23:27:45
【问题描述】:
我想在cellForRowAtIndexPath 中设置UITableViewCell 的子视图时使用以下代码:
cellSubView.center = CGPointZero
打印出框架的坐标表明框架更新成功,但是视图仍然显示在界面构建器中给定的位置。
使用以下代码覆盖 viewDidAppear 函数将解决此问题:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.tableView.reloadData()
}
但这会导致闪烁:当我更改其中一个单元格的子视图位置时,表格视图已经出现了。
如何在视图出现之前更改框架?
【问题讨论】:
-
你用过AutoLayout吗?
-
如果您使用的是自动布局,请尝试在 viewWillLayoutSubviews() 委托方法中重新加载表格。
-
从 iOS8 开始,您实际上不应该在代码中调整框架。 iOS8 对帧的代码更改通常会被系统为您添加的约束所忽略或更改。相反,您应该使用约束。为
cellSubView添加一个约束,使其在其容器视图中居中。 -
你为什么不把它作为答案?
标签: ios uitableview swift frame viewdidappear