如何实现iOS 11的MKUserTrackingButton

时间:2017-10-16 09:06:31

标签: swift mapkit ios11 swift4

我正在尝试实施MKUserTrackingButton(这是iOS 11 SDK中的新功能)。这个"按钮"实际上从UIView继承,所以我只是在我的Map和Identity Inspector中放置一个UIView实例,将它链接到MKUserTrackingButton类,在我的代码和viewDidLoad()中添加了一个插座。

我按以下方式初始化它:

self.centerMapButton = MKUserTrackingButton.init(mapView: self.mapView)

但是,没有任何作用,我的地图上只有一个空白视图。

PS:这是关于这一新功能的WWDC 2017会议(1:25):https://developer.apple.com/videos/play/wwdc2017/237/

这是我在viewDidLoad()中调用的方法来实现按钮:

func setupUserTrackingButtonAndScaleView() {
    mapView.showsUserLocation = true

    let button = MKUserTrackingButton(mapView: mapView)
    button.layer.backgroundColor = UIColor(white: 1, alpha: 0.8).cgColor
    button.layer.borderColor = UIColor.white.cgColor
    button.layer.borderWidth = 1
    button.layer.cornerRadius = 5
    button.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(button)

    let scale = MKScaleView(mapView: mapView)
    scale.legendAlignment = .trailing
    scale.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(scale)

    NSLayoutConstraint.activate([button.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10),
                                 button.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10),
                                 scale.trailingAnchor.constraint(equalTo: button.leadingAnchor, constant: -10),
                                 scale.centerYAnchor.constraint(equalTo: button.centerYAnchor)])
}

请注意,我的ViewController中有一个mapView实例。

1 个答案:

答案 0 :(得分:0)

我刚刚针对我的MapKit应用运行了你的代码,它运行良好。确保将正确的mapView实例传递给MKUserTrackingButton。