当我编写此代码时,我看不到菜单栏(蓝色视图),但是当我将参数从50更改为100时,它的显示方式变为了。似乎它位于状态字段的后面。我希望约束与状态栏相关,而不与屏幕顶部相关。谁知道为什么?
func setupMenuBar(){
view.addSubview(menuBar)
view.addConstriantswithFormat(format: "H:|[v0]|", views:menuBar)
view.addConstriantswithFormat(format: "V:|[v0(50)]", views:menuBar)
}
答案 0 :(得分:1)
您需要将menuBar
视图约束到该视图的安全区域,以使其与导航栏底部对齐。
虽然与Visual Format Language无关。这种替代方法应该很容易理解:
view.addSubview(menuBar)
let guide = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
menuBar.topAnchor.constraint(equalTo: guide.topAnchor, constant: 0.0),
menuBar.leadingAnchor.constraint(equalTo: guide.leadingAnchor, constant: 0.0),
menuBar.trailingAnchor.constraint(equalTo: guide.trailingAnchor, constant: 0.0),
menuBar.heightAnchor.constraint(equalToConstant: 50.0),
])
答案 1 :(得分:0)
如果红色视图是导航栏,则您可能应该看一下顶部栏下方未延伸的边缘;否则,您需要根据红色视图限制蓝色视图。
我更喜欢使用锚。它更容易阅读。
例如(快速):
blueView.topAnchor.constraint(equalTo: redView.bottomAnchor).isActive = true
blueView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
blueView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
blueView.heightAnchor.constraint(equalToConstant: 50).isActive = true