MKMapView 不保持旋转

MKMapView not staying rotated

易于重现: - 创建一个新项目 - 在屏幕上放置一个 MKMapView - 尝试用 2 根手指旋转它

稍微转一下就停了,松开手指,又回到原来的位置。

如何让它保持旋转? 想旋转多少就旋转多少?

我正在使用最新的 iOS(8.something)、iPhone 6 模拟器和 Swift。

请试试这个 全局声明:

let regionRadius: CLLocationDistance = 1000

并且在 viewdidload 中:

let initialLocation = CLLocation(latitude: 21.282778, longitude: -157.829444)
    centerMapOnLocation(initialLocation)

然后创建一个助手class:

func centerMapOnLocation(location: CLLocation) {
        let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
            regionRadius * 2.0, regionRadius * 2.0)
        mapview.setRegion(coordinateRegion, animated: true)
    }

尝试使用 MKMapView 的 rotateEnabled 属性 :

旋转启用 - 是否使用地图相机航向信息的布尔值

声明

SWIFT var rotateEnabled: Bool

当此 属性 设置为 YES 并且有效相机与地图相关联时,相机的航向角用于围绕其中心点旋转地图平面。当此 属性 设置为 NO 时,相机的航向角将被忽略并且地图始终定向,以便真北位于地图视图的顶部。

您必须重写 CLLocationManager.didUpdateLocations(CLLocationManagerDelegate 的一部分)才能在位置管理器检索当前位置并且不执行任何操作时收到通知:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
    // Don't do update the map to the new location
}

我找到问题了。 实际上没有解决方案,如果地图区域太大,MKMapView 不允许您保持旋转。 如果你放大你可以正常旋转。