UITableView - 调整框架大小并滚动到行

时间:2017-02-16 19:30:04

标签: ios swift uitableview

我有一个UITableView,我需要显示一个选择器,所以我想缩短桌子的框架高度,同时滚动到该行以使其可见。

我这样做:添加400像素的下边距(通过将底部约束距离设置为400)并滚动到该行

bottomConstraint.constant = 400
tableview.scrollToRow(at: currentIndexPath, at: .bottom, animated: true)

这两个命令都是自己工作的(我测试过)。但结果是表格缩短了,并且所选行不会出现在视线上(例如,如果该行是最后一行)。

显然正在发生的事情是在实际更新约束之前处理滚动,因此如果在更改约束之前该行是可见的,则在缩短表时它不会滚动。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

设置约束后,您需要调用self.view.layoutIfNeeded()。另一个选项是您可以设置约束更改的动画并在完成处理程序中调用tableView.scroll...,但是为约束设置动画的方式是设置常量,然后在动画块中调用layoutIfNeeded,所以它和除了视觉和时间方面之外,它基本上是相同的。