我有一个 MKMapView,我用这样的代码扩展和收缩:
UIView.animate(withDuration: 0.5) {
mapView.frame = CGRect(x: 0, y: 0, width: 200, height: 400)
}
在 IOS 11 之前,上述代码会在动画完成后触发 regionDidChangeAnimated
delegate 方法。它会改变它的区域并让缩放级别。
在 iOS 11 中,只有缩放比例发生了变化。没有触发任何委托(delegate)方法。
我需要像以前一样拥有它。更改 map 框架应该只会使可见区域更大而不会改变缩放比例。
我尝试在更改 mapViews 框架之前设置 mapView.isZoomEnabled = false
,但缩放级别不断变化。
更新:
我添加了两个动画 GIF 来比较 IOS 11 和以前的 IOS 版本。
IOS 11 会在展开动画开始前立即放大。反向动画完成后会缩小。
正如您在下面看到的,IOS 9 的动画非常流畅。
iOS 11:
iOS 9:
最佳答案
找到解决办法了!更多的黑客:
使 MapView 在 Y 上居中并给 MapView 一个固定的高度,我使用了:UIScreen.main.bounds.size.height
。
关于IOS 11 MKMapview 在更改其框架或旋转时更改缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46890531/