MGLMapView不显示添加到视图控制器的任何对象

时间:2018-10-02 20:54:00

标签: ios swift object uiview mapbox

我已经正确设置了一个包含UIView"MGLMapView"的Viewcontroller,我试图在Viewcontroller中添加一个按钮,但是当我运行该应用程序时,该按钮未显示。

就像我使用外部Viewcontroller并覆盖MapViewController一样,它可以运行,但不会显示。

为什么?有人有类似的问题吗?以及如何解决?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道MGLMapView,但是它应该遵循与其他UIView对象相同的规则。

此示例基于MKMapView,但应与MGMapView类似。将此代码放入VC中,并将setUpViews()添加到您的viewDidLoad()方法中。

注意:此代码应将MKMapView放在视图堆栈的底部,地图视图应占据整个视图(顶部64点除外,我假设UINavigationView可能是使用中-如果不只是将约束中的64.0更改为0.0)。然后,它在UIButton的顶部(沿x方向居中)添加MKMapView,宽度为150,高度为视图底部的40和20。

let map: MKMapView = {
    let view = MKMapView()
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

let button: UIButton = {
    let view = UIButton()
    // Add or change attributes as you need
    view.backgroundColor = UIColor.green
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

fileprivate func setUpViews(){
    // Add the map first
    self.view.addSubview(map)
    // Add the button now it will be on top of the map view
    self.view.addSubview(button)
    map.delegate = self;

    NSLayoutConstraint.activate([
        map.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 64.0),
        map.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
        map.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
        map.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)
        ])


    NSLayoutConstraint.activate([
        button.centerXAnchor.constraint(equalTo: self.view.centerXAnchor, constant: 0.0),
        button.heightAnchor.constraint(equalToConstant: 40.0),
        button.widthAnchor.constraint(equalToConstant: 150.0),
        button.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -20.0),
        ])
}