以编程方式Swift为navigationBar添加约束

nik*_*ar4 4 uinavigationbar uiimageview ios nslayoutconstraint swift

我正在尝试向导航栏添加约束,我有UIImageView,它有宽度,高度并且水平居中,我想在0 UIImagenavigationBar0 之间添加垂直空间,我正在尝试这个1小时而无法弄清楚如何,我尝试添加约束UIView,并添加常量navbarHeight + statusBarHeight,它工作,但我想在imageview和导航栏之间建立关系

let verticalSpace = NSLayoutConstraint(item: image, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: 0)
view.addConstraint(verticalSpace) // this works
Run Code Online (Sandbox Code Playgroud)

EI *_*2.0 7

尝试 topLayoutGuide

let verticalSpace = NSLayoutConstraint(item: image,  
                                       attribute: .Top,  
                                       relatedBy: .Equal,  
                                       toItem: self.topLayoutGuide,  
                                       attribute: .Bottom,  
                                       multiplier: 1, constant: 0)  
Run Code Online (Sandbox Code Playgroud)

以上约束说明:

简单地称之为: image.Top&self.topLayoutGuide.Bottom = 0之间的垂直空间

这意味着使用topLayoutGuide的Bottom属性附加的imageview的top约束,常量为0.


And*_*vak 5

llkenny对于iOS 11.0+的答案: image.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true