Добавить ограничение на панель навигации программно Swift


Я пытаюсь добавить ограничение на панель навигации, у меня есть UIImageView, которая имеет ширину, высоту и центрирована по горизонтали, я хочу добавить вертикальное пространство между UIImage и navigationBar к 0, я пытаюсь это сделать в течение примерно 1 часа и не мог понять, как, я пытался добавить ограничение к UIView, и добавил константу navbarHeight + statusBarHeight, и это сработало, но я хочу сделать связь между imageview и navbar {[7]]}

let verticalSpace = NSLayoutConstraint(item: image, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: 0)
view.addConstraint(verticalSpace) // this works
3 4

3 ответа:

Попробуйте с topLayoutGuide

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

Приведенное выше объяснение ограничения:

Просто его называют: вертикальное пространство между изображением.Топ и самость.topLayoutGuide.Дно = 0

Это означает, что верхнее ограничение imageview связано с Нижним атрибутом topLayoutGuide с константой 0.

С якорями:

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

Ответ Llkenny'S для iOS 11.0+ : image.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true