我对我的应用程序中的一种视图有疑问。视图嵌入在UIViewController
中。我想同时更改两个视图的高度。
我的布局如下:
蓝色点和彩色线是我的约束。地图视图附加到顶部和侧面,并且存在高度限制。
然后,我有一个UITableView
附加到地图视图和底视图。
此外,下视图还有一些限制。该视图固定在侧面,固定高度为64。
我认为约束条件设置正确,没有警告。
每当用户单击UITableView
单元格时,我都希望更改地图视图和UITableView
的高度。因为UITableView
已附加到地图视图,所以我认为如果仅对地图视图的高度约束变化设置动画,这将是最简单的。
但是这样做会导致两个视图之间出现空白。当视图折叠时(当用户再次轻按时),它看起来不错。
这是我的代码:
self.mapViewHeightConstraint.constant = self.view.frame.height * 0.40
UIView.animate(withDuration: 0.4, animations:
{
self.view.layoutIfNeeded()
}, completion: nil})
我也尝试了这段代码(在使用约束之前,但是结果是相同的):
UIView.animate(withDuration: 0.4, animations:
{
self.tableView.frame = CGRect(x: 0, y: self.view.frame.height * 0.40, width: self.view.frame.width, height: self.view.frame.height * 0.90)
self.mapView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height * 0.40)
}, completion: nil})
我试图禁用自动布局,但这不能解决问题。我还附了一个小视频:
如您所见,当我第一次点击该单元格并且地图视图变小时,会有一个小的跳跃,带有空白。但是,当我再次点按该单元格并将地图视图恢复为完整大小时,则不会出现这种跳跃。 我该如何解决这个问题?