更新MKMapView约束,但在屏幕上的相同位置保留注释

max*_*hud 5 ios swift

我有一个mkmapview,上面有注释.我想调整mapview的大小(通过将高度约束的常量从200更改为400),但我不希望地图的中心坐标完全移动.

当前,当调整地图大小时,中心坐标移动以使其保持在地图的中心(如果地图高度从200到400,则从(x,100)到(x,200)).

似乎唯一的解决方案就是执行这样的代码:

var coordinate = self.mapView.centerCoordinate
coordinate.latitude += self.mapView.region.span.latitudeDelta * 0.25;
self.mapView.setCenterCoordinate(coordinate, animated: true)
Run Code Online (Sandbox Code Playgroud)

这确实有效,但我遇到的问题主要是动画.我想以动画方式更新约束:

mapHeightConstraint.constant = 400
UIView.animateWithDuration(0.35) {
    self.view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)

无论我是否在调整中心之前或之后设置约束动画,都会导致地图无法设置动画.

我希望两个动画同时发生并花费相同的时间或找到另一个解决方案.