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
])
}