Ios 如何设置固定布局约束?

Ios 如何设置固定布局约束?,ios,swift,autolayout,Ios,Swift,Autolayout,我正在以编程方式创建地图用户界面。我希望视图的顶部在UINavigationBar之后开始,底部距屏幕底部250。我已添加到以下代码中: private lazy var mapView: GMSMapView = { let mv = GMSMapView(frame: CGRect.zero) mv.settings.myLocationButton = true mv.isMyLocationEnabled = true mv.translatesAutor

我正在以编程方式创建地图用户界面。我希望视图的顶部在
UINavigationBar
之后开始,底部距屏幕底部250。我已添加到以下代码中:

private lazy var mapView: GMSMapView = {
    let mv = GMSMapView(frame: CGRect.zero)
    mv.settings.myLocationButton = true
    mv.isMyLocationEnabled = true
    mv.translatesAutoresizingMaskIntoConstraints = false
    return mv
}()

override func loadView() {
    let screenSize = UIScreen.main.bounds
    let v = UIView(frame: CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height))
    v.backgroundColor = UIColor.white
    view = v
    updateMap()
    view.addSubview(mapView)
}

override func viewDidLoad() {
    super.viewDidLoad()
    initConstraints()
}

func initConstraints() {
    guard let navVC = navigationController else { return }
    NSLayoutConstraint.activate([
        mapView.topAnchor.constraint(equalTo: view.topAnchor, constant: navVC.navigationBar.frame.maxY),
        mapView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0),
        mapView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0),
        mapView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -200)  // not working properly
    ])
}
在这里,当设置底部锚点时,也会从顶部移除相等的空间,这我不明白。请参阅所附的屏幕截图

如何删除顶部空间,但保留底部空间?

只需更换即可

mapView.topAnchor.constraint(equalTo:view.topAnchor,constant:navVC.navigationBar.frame.maxY)

mapView.topAnchor.constraint(equalTo: view.topAnchor, constant:0)
常量:navVC.navigationBar.frame.maxY

表示您的
ui视图
Y位置对于非安全区域为64像素 设备和88像素,用于具有安全区域的设备

最终代码:
问题是我添加了导致此问题的
mapView.center=view.center
。删除此语句修复了此问题

func initConstraints() {
    guard let navVC = navigationController else { return }
    NSLayoutConstraint.activate([
        mapView.topAnchor.constraint(equalTo: view.topAnchor, constant:0),
        mapView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0),
        mapView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0),
        mapView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -200)  // not working properly
    ])
}