在iOS中设置动画高度限制会导致两个UIView之间出现空白

时间:2019-06-27 03:34:45

标签: ios swift core-animation

我对我的应用程序中的一种视图有疑问。视图嵌入在UIViewController中。我想同时更改两个视图的高度。

我的布局如下:

Layout

蓝色点和彩色线是我的约束。地图视图附加到顶部和侧面,并且存在高度限制。 然后,我有一个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})

我试图禁用自动布局,但这不能解决问题。我还附了一个小视频:

Preview

如您所见,当我第一次点击该单元格并且地图视图变小时,会有一个小的跳跃,带有空白。但是,当我再次点按该单元格并将地图视图恢复为完整大小时,则不会出现这种跳跃。 我该如何解决这个问题?

0 个答案:

没有答案