以编程方式向 navigationBar 添加约束 Swift
Add Constraint to navigationBar Programmatically Swift
我正在尝试向导航栏添加约束,我有 UIImageView
,它具有宽度、高度并且水平居中,我想在 UIImage
之间添加垂直 space和 navigationBar
到 0,我试了 1 小时,但不知道如何,我尝试向 UIView
添加约束,并添加 navbarHeight + statusBarHeight
的常量,它起作用了, 但我想在 imageview 和 navbar
之间建立关系
let verticalSpace = NSLayoutConstraint(item: image, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: 0)
view.addConstraint(verticalSpace) // this works
试试 topLayoutGuide
let verticalSpace = NSLayoutConstraint(item: image,
attribute: .Top,
relatedBy: .Equal,
toItem: self.topLayoutGuide,
attribute: .Bottom,
multiplier: 1, constant: 0)
以上约束解释:
simply its called: vertical space between image.Top & self.topLayoutGuide.Bottom = 0
这意味着图像视图的顶部约束附加了 topLayoutGuide 的底部属性,常量为 0。
您也可以使用 anchors
来实现 iOS 10+
if #available(iOS 11.0, *) {
image.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
} else {
image.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true
}
有锚点:
image.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true
llkenny 对 iOS 11.0+ 的回答:
image.topAnchor.constraint(equalTo:
view.safeAreaLayoutGuide.topAnchor).isActive = true
在情节提要中。两个约束:
第一个:
第二个:
结果:
代码:
func mainCollectionViewConstraint() {
NSLayoutConstraint.activate([
mainCollectionView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10),
mainCollectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
mainCollectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
mainCollectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
])
}
我正在尝试向导航栏添加约束,我有 UIImageView
,它具有宽度、高度并且水平居中,我想在 UIImage
之间添加垂直 space和 navigationBar
到 0,我试了 1 小时,但不知道如何,我尝试向 UIView
添加约束,并添加 navbarHeight + statusBarHeight
的常量,它起作用了, 但我想在 imageview 和 navbar
let verticalSpace = NSLayoutConstraint(item: image, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: 0)
view.addConstraint(verticalSpace) // this works
试试 topLayoutGuide
let verticalSpace = NSLayoutConstraint(item: image,
attribute: .Top,
relatedBy: .Equal,
toItem: self.topLayoutGuide,
attribute: .Bottom,
multiplier: 1, constant: 0)
以上约束解释:
simply its called: vertical space between image.Top & self.topLayoutGuide.Bottom = 0
这意味着图像视图的顶部约束附加了 topLayoutGuide 的底部属性,常量为 0。
您也可以使用 anchors
来实现 iOS 10+
if #available(iOS 11.0, *) {
image.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
} else {
image.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true
}
有锚点:
image.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true
llkenny 对 iOS 11.0+ 的回答:
image.topAnchor.constraint(equalTo:
view.safeAreaLayoutGuide.topAnchor).isActive = true
在情节提要中。两个约束:
第一个:
第二个:
结果:
func mainCollectionViewConstraint() {
NSLayoutConstraint.activate([
mainCollectionView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10),
mainCollectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
mainCollectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
mainCollectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
])
}