UITableView - 调整大小的框架和滚动到行
问题描述:
我有一个UITableView
,我需要显示一个选择器,所以我想缩短表框的高度,同时滚动到行以保持可见。UITableView - 调整大小的框架和滚动到行
我这样做:添加的400个像素底部边缘(通过设置到400的底部约束的距离),然后滚动到行
bottomConstraint.constant = 400
tableview.scrollToRow(at: currentIndexPath, at: .bottom, animated: true)
两个命令都通过自己工作(I测试)。但结果是表格缩短了,所选行不会出现(例如,如果行是最后一行)。
显然发生了什么事情是在约束实际更新之前处理了滚动,因此如果行在约束更改之前是可见的,则在缩短表时它不会滚动。
任何想法?
答
设置约束条件后需要调用self.view.layoutIfNeeded()
。另一种选择是,您可以在完成处理程序中为约束更改设置动画并调用tableView.scroll...
,但动画约束的方式是设置常量,然后在动画块中调用layoutIfNeeded
,因此除了视觉外,它本质上是相同的东西和时间方面。
+0
layoutIfNeeded做到了!谢谢 –
每一个约束条件的不断变化应该跟着一个view.layoutIfNeeded() –