Add Constraint to navigationBar Programmatically Swift

try with topLayoutGuide

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

The above constraint explanation:

simply its called: vertical space between image.Top & self.topLayoutGuide.Bottom = 0

that means Top constraint of image view attached with a Bottom attribute of topLayoutGuide with constant 0.

You can use anchors as well to make this possible for 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
}

llkenny's answer for iOS 11.0+ : image.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true


With anchors:

image.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true