我有一个带有单元格的标准tableView。iOS:无法在加载表格视图时更新单元格中的视图框架
在这些单元格中,有一个视图需要在滚动时更改框架位置。
我做了一个更新的功能取决于其位置的tableview内的画面(我使用convertRect(_:toView:)
)
滚动时,它的正常工作,我打电话UIScrollViewDelegate
功能scrollViewDidScroll(_)
内此功能。
我的问题是在加载单元格时设置视图的初始位置。
为此,我打电话给我在tableView(_:willDisplayCellforRowAtIndexPath:)
中调用的相同功能,以便在准备显示时设置视图的框架。
当我在函数后面记录视图框架时,它具有期望的值,但是在屏幕上视图位于错误的位置,就像显示没有刷新一样。
我知道改变一个框架,而加载视图可能会很棘手,导致这样的事情,但我试过我可以想到和发现的一切,无论在哪个tableview/cell函数我试图更新视图的框架,它不会改变,直到我开始滚动。
对于记录,我试图在:
- 主控制器
tableView(_:willDisplayCellforRowAtIndexPath:)
- 主控制器
viewDidAppear()
- 细胞
layoutSubviews()
- 细胞
drawRect()
我也试图与在约束自动布局,但没有任何关系。
我确信我错过了加载单元格时更新框架的正确位置,但我无法弄清楚。
感谢您的帮助
这太快了这个功能,电池的框架不被初始化但是 – Sylver
你可以先初始化你想要的任何东西,然后调用tableView.reloadData(),并且cellForRowAtIndexPath将被再次调用到每个单元格 –
不,它取决于单元格框架,它不是还没有在tableView(_:cellForRowAtIndexPath :)。调用reloadData并不能解决任何问题,但是加载所有tableview是没用的。在最好的情况下,不需要做任何重新加载。 – Sylver