指南针在MKMapView中的放置或定位?

Kev*_*vin 4 mkmapview swift

我正在用Swift编写一个基于位置的应用程序。

我使MapView可以显示指南针,但我想将指南针的位置从右上角更改为左下角。

有专家知道如何移动它吗?

在此先感谢您。

Wes*_*een 11

您可以通过将指南针的可见性设置为false然后添加新的指南针来实现

mapView.showsCompass = false

let compassBtn = MKCompassButton(mapView:mapView)
compassBtn.frame.origin = CGPoint(x: self.view.frame.maxX - 40, y: 20)
compassBtn.compassVisibility = .adaptive
view.addSubview(compassBtn)
Run Code Online (Sandbox Code Playgroud)

您可以使用自适应可见性,因此新指南针的行为将与原始指南针相同。


G. *_*ika 5

您可以尝试更改此设置:

mapView.layoutMargins 
Run Code Online (Sandbox Code Playgroud)

或子类化MKMapView组件:

import MapKit

class MyMapView: MKMapView {    
    override func layoutSubviews() {
        super.layoutSubviews()

        if let compassView = self.subviews.filter({ $0.isKindOfClass(NSClassFromString("MKCompassView")!) }).first {
            compassView.frame = CGRectMake(15, 30, 36, 36)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 确认:`mapView.layoutMargins = view.safeAreaInsets` 最适合我。 (2认同)