NSLayoutConstraint 规则
NSLayoutConstraint rules
我在编写这段代码时看不到菜单栏(蓝色视图),但是当我将参数从 50 更改为 100 时,它显示了。它似乎位于状态字段的后面。我希望约束与状态栏相关,而不是屏幕顶部。有人知道为什么吗?
func setupMenuBar(){
view.addSubview(menuBar)
view.addConstriantswithFormat(format: "H:|[v0]|", views:menuBar)
view.addConstriantswithFormat(format: "V:|[v0(50)]", views:menuBar)
}
如果红色视图是一个导航栏,你可能应该注意不要在顶部栏下延伸边缘;否则,您需要根据红色视图来约束蓝色视图。
我更喜欢使用锚点。它更容易阅读。
例如 (Swift):
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
您需要将 menuBar
视图限制在视图的 安全区域 以使其与导航栏底部对齐。
虽然很难用视觉格式语言来做。这种替代方法应该很容易理解:
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),
])
我在编写这段代码时看不到菜单栏(蓝色视图),但是当我将参数从 50 更改为 100 时,它显示了。它似乎位于状态字段的后面。我希望约束与状态栏相关,而不是屏幕顶部。有人知道为什么吗?
func setupMenuBar(){
view.addSubview(menuBar)
view.addConstriantswithFormat(format: "H:|[v0]|", views:menuBar)
view.addConstriantswithFormat(format: "V:|[v0(50)]", views:menuBar)
}
如果红色视图是一个导航栏,你可能应该注意不要在顶部栏下延伸边缘;否则,您需要根据红色视图来约束蓝色视图。
我更喜欢使用锚点。它更容易阅读。
例如 (Swift):
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
您需要将 menuBar
视图限制在视图的 安全区域 以使其与导航栏底部对齐。
虽然很难用视觉格式语言来做。这种替代方法应该很容易理解:
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),
])