在Mapbox的导航视图上添加自定义按钮

时间:2018-11-23 06:35:11

标签: ios swift autolayout mapbox nslayoutconstraint

我正在使用Mapbox允许用户在位置之间导航。我正在使用文档(https://www.mapbox.com/ios-sdk/navigation/examples/basic/)中所述的基本导航功能。这给了我如下导航视图。 enter image description here

我想在视图底部添加一个自定义按钮。为此,我尝试了以下代码。

Directions.shared.calculate(options) { (waypoints, routes, error) in

    guard let route = routes?.first else {
        self.showAlertMessage("No possible routes detected")
        return
    }

    self.mapNavigationViewController = NavigationViewController(for: route)

    self.mapNavigationViewController.delegate = self

    self.present(self.mapNavigationViewController, animated: true, completion: {

        let customButton = UIButton()
        customButton.setTitle("Press", for: .normal)
        customButton.translatesAutoresizingMaskIntoConstraints = false
        customButton.backgroundColor = .blue
        customButton.contentEdgeInsets = UIEdgeInsets(top: 10, left: 20, bottom: 10, right: 20)

        self.mapNavigationViewController.view.addSubview(customButton)

        customButton.bottomAnchor.constraint(equalTo: self.mapNavigationViewController.view.bottomAnchor, constant: 0).isActive = true
        customButton.leftAnchor.constraint(equalTo: self.mapNavigationViewController.view.leftAnchor, constant: 0).isActive = true
        customButton.rightAnchor.constraint(equalTo: self.mapNavigationViewController.view.rightAnchor, constant: 0).isActive = true

        self.mapNavigationViewController.view.setNeedsLayout()

    })
}

有了这个,我得到了如下的按钮。

enter image description here

现在,下一步要做的是移动地图框的视图,使其底部与自定义按钮的顶部对齐。我该如何实现?

2 个答案:

答案 0 :(得分:2)

我能够完成此Mapbox documentation之后的任务。

答案 1 :(得分:1)

要实现您的目标,您将必须更改库中实现的地图视图的底部约束。这样您就可以将其底部约束设置为等于customButton

的顶部约束

查看您是否有权访问图书馆的地图视图或其底部约束。