Вот пример кода (Ссылка из: Руководство по макету безопасной области ):
Если вы создаете ограничения в коде, используйте свойство safeAreaLayoutGuide UIView, чтобы получить соответствующие привязки макета. Давайте воссоздадим приведенный выше пример Interface Builder в коде, чтобы увидеть, как он выглядит:
Предполагая, что у нас есть зеленое представление как свойство в нашем контроллере представления:
private let greenView = UIView()
У нас может быть функция для настройки представлений и ограничений, вызываемая из viewDidLoad:
private func setupView() {
greenView.translatesAutoresizingMaskIntoConstraints = false
greenView.backgroundColor = .green
view.addSubview(greenView)
}
Создайте ограничения начального и конечного поля, как всегда, используя layoutMarginsGuide корневого представления:
let margins = view.layoutMarginsGuide
NSLayoutConstraint.activate([
greenView.leadingAnchor.constraint(equalTo: margins.leadingAnchor),
greenView.trailingAnchor.constraint(equalTo: margins.trailingAnchor)
])
Теперь, если вы не ориентируетесь на iOS 11 и более поздние версии, вам нужно будет обернуть ограничения руководства по макету безопасной области с помощью #available и вернуться к верхним и нижним руководствам по макету для более ранних версий iOS:
if #available(iOS 11, *) {
let guide = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
greenView.topAnchor.constraintEqualToSystemSpacingBelow(guide.topAnchor, multiplier: 1.0),
guide.bottomAnchor.constraintEqualToSystemSpacingBelow(greenView.bottomAnchor, multiplier: 1.0)
])
} else {
let standardSpacing: CGFloat = 8.0
NSLayoutConstraint.activate([
greenView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: standardSpacing),
bottomLayoutGuide.topAnchor.constraint(equalTo: greenView.bottomAnchor, constant: standardSpacing)
])
}
Результат:
Вот официальная документация разработчика Apple для руководства по макету безопасной зоны.
Безопасная зона требуется для разработки пользовательского интерфейса iPhone-X. Вот базовое руководство по разработке пользовательского интерфейса для iPhone-X с использованием макета безопасной зоны.