我有一个UITableView
,我需要显示一个选择器,所以我想缩短桌子的框架高度,同时滚动到该行以使其可见。
我这样做:添加400像素的下边距(通过将底部约束距离设置为400)并滚动到该行
bottomConstraint.constant = 400
tableview.scrollToRow(at: currentIndexPath, at: .bottom, animated: true)
这两个命令都是自己工作的(我测试过)。但结果是表格缩短了,并且所选行不会出现在视线上(例如,如果该行是最后一行)。
显然正在发生的事情是在实际更新约束之前处理滚动,因此如果在更改约束之前该行是可见的,则在缩短表时它不会滚动。
有什么想法吗?
答案 0 :(得分:1)
设置约束后,您需要调用self.view.layoutIfNeeded()
。另一个选项是您可以设置约束更改的动画并在完成处理程序中调用tableView.scroll...
,但是为约束设置动画的方式是设置常量,然后在动画块中调用layoutIfNeeded
,所以它和除了视觉和时间方面之外,它基本上是相同的。