我已经正确设置了一个包含UIView
类"MGLMapView"
的Viewcontroller,我试图在Viewcontroller中添加一个按钮,但是当我运行该应用程序时,该按钮未显示。
就像我使用外部Viewcontroller并覆盖MapViewController一样,它可以运行,但不会显示。
为什么?有人有类似的问题吗?以及如何解决?
谢谢!
答案 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),
])
}