Поскольку я не использую раскадровки для создания своих представлений, мне было интересно, есть ли программная опция «Использовать руководства по безопасным областям» или что-то в этом роде.
Я пытался привязать свои взгляды к
view.safeAreaLayoutGuide
но они продолжают перекрывать высшую ступень в симуляторе iPhone X.
ios
swift
iphone-x
safearealayoutguide
Филипп
источник
источник
view.safeAreaInsets
? Вы пробовали это?Ответы:
Вот пример кода (Ссылка из: Руководство по макету безопасной области ):
Если вы создаете ограничения в коде, используйте свойство safeAreaLayoutGuide UIView, чтобы получить соответствующие привязки макета. Давайте воссоздадим приведенный выше пример Interface Builder в коде, чтобы увидеть, как он выглядит:
Предполагая, что у нас есть зеленое представление как свойство в нашем контроллере представления:
У нас может быть функция для настройки представлений и ограничений, вызываемая из viewDidLoad:
Создайте ограничения начального и конечного поля, как всегда, используя layoutMarginsGuide корневого представления:
Теперь, если вы не ориентируетесь на iOS 11 и более поздние версии, вам нужно будет обернуть ограничения руководства по макету безопасной области с помощью #available и вернуться к верхним и нижним руководствам по макету для более ранних версий iOS:
Результат:
Вот официальная документация разработчика Apple для руководства по макету безопасной зоны.
Безопасная зона требуется для разработки пользовательского интерфейса iPhone-X. Вот базовое руководство по разработке пользовательского интерфейса для iPhone-X с использованием макета безопасной зоны.
источник
Я на самом деле использую для него расширение и контролирую, ios 11 это или нет.
источник
self.safeAreaLayoutGuide
вместоself.layoutMarginsGuide
. Безопасный, использованный в этом ответе, работал правильно, чтобы я оставался в безопасной зоне! Одна вещь, которую я бы предложил изменить, - это использоватьleadingAnchor
иtrailingAnchor
вместоleftAnchor
иrightAnchor
. Браво!SafeAreaLayoutGuide
этоUIView
собственность,Используйте,
safeAreaLayoutGuide
чтобы избежать отсечения / наложения наших объектов из закругленных углов, панелей навигации, панелей вкладок, панелей инструментов и других предков.Мы можем создать
safeAreaLayoutGuide
объект и установить объектные ограничения соответственно.Ограничения для портрета + ландшафта -
UILayoutGuide
safeAreaLayoutGuide
источник
viewDidAppear
, если вы не знаете, что делаете.viewDidAppear
вызывается несколько раз, поэтому ваши ограничения будут дублироваться каждый раз при его вызове.Для тех из вас, кто использует SnapKit , как и для меня, решение заключается в привязке ваших ограничений к следующему
view.safeAreaLayoutGuide
:источник
Я использую это вместо добавления начальных и конечных ограничений маржи в layoutMarginsGuide:
Также проверьте вариант для более низкой версии ios 11 из ответа Крунала.
источник
Использование
UIWindow
илиUIView
«ssafeAreaInsets
.bottom
.top
.left
.right
источник
Используйте ограничения с визуальным форматом, и вы получите уважение к безопасной зоне бесплатно.
источник
Расширение безопасной зоны для Objective-C
источник
Swift 4.2 и 5.0. Предположим, вы хотите добавить ограничения Leading, Trailing, Top и Bottom для viewBg. Итак, вы можете использовать приведенный ниже код.
источник
Это расширение помогает вам ограничить UIVIew его супервизором и супервизором + safeArea:
источник
Вы можете использовать view.safeAreaInsets, как описано здесь https://www.raywenderlich.com/174078/auto-layout-visual-format-language-tutorial-2
пример кода (взято с сайта raywenderlich.com):
источник