如何重新定位MKMapView的指南针?

我想移动MKMapView指南针。 我希望通过以下方式获得它的参考:

let compassView = mapView.subviews.filter {$0 is NSClassFromString("MKCompassView")} 

然而,编译器抱怨“使用未声明的类型’NSClassFromString’”。 我该如何修复此代码?

iOS 11

你应该使用MKCompassButton ,doc解释新的东西: WWDC 2017新的MapKit演示文稿 。

 let compassButton = MKCompassButton(mapView:mapView) compassButton.frame.origin = CGPoint(x: 20, y: 20) compassButton.compassVisibility = .visible view.addSubview(compassButton) 

iOS <11

你可能会尝试使用String(describing:) ,例如:

 if let compassButton = (mapView.subviews.filter { String(describing:$0).contains("MKCompassView") }.first) { print(compassButton) } 

对于iOS 11及更高版本,请使用MKCompassButton

 let compass = MKCompassButton(mapView: mapView)