IOS 11 MKMapview 在更改其框架或旋转时更改缩放级别

标签 ios animation mkmapview ios11

我有一个 MKMapView,我用这样的代码扩展和收缩:

UIView.animate(withDuration: 0.5) {
   mapView.frame = CGRect(x: 0, y: 0, width: 200, height: 400)
}

在 IOS 11 之前,上述代码会在动画完成后触发 regionDidChangeAnimateddelegate 方法。它会改变它的区域并让缩放级别。

在 iOS 11 中,只有缩放比例发生了变化。没有触发任何委托(delegate)方法。

我需要像以前一样拥有它。更改 map 框架应该只会使可见区域更大而不会改变缩放比例。

我尝试在更改 mapViews 框架之前设置 mapView.isZoomEnabled = false,但缩放级别不断变化。

更新:

我添加了两个动画 GIF 来比较 IOS 11 和以前的 IOS 版本。

IOS 11 会在展开动画开始前立即放大。反向动画完成后会缩小。

正如您在下面看到的,IOS 9 的动画非常流畅。


iOS 11:

enter image description here


iOS 9:

enter image description here

最佳答案

找到解决办法了!更多的黑客:

使 MapView 在 Y 上居中并给 MapView 一个固定的高度,我使用了:UIScreen.main.bounds.size.height

关于IOS 11 MKMapview 在更改其框架或旋转时更改缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46890531/

相关文章:

ios - 使用 CVPixelBufferCreate 复制/复制 CVPixelBufferRef

ios - 从NSStrings中提取数字

css - Angular2推卡动画?

swift - MKMapView 中注释气泡内的链接

ios - Swift 中的完成处理程序

objective-c - 在 Objective c 中管理内存

ios - 在应用于单元格之前未设置自定义 Collection View 布局属性

jquery - 网页动画css高亮

html - 用空标签塑造形状。需要代码解释

objective-c - IOS - Mapkit 崩溃 - 这是 xcode 4.2 和自动引用计数 (ARC) 中的错误吗?