Во время изучения Xcode9 Beta Found Safe Area на Интерфейсных разработчиках Просмотр иерархии просмотра. Получил любопытство и попытался узнать о документах «Безопасная зона на яблоках», в сущности документ говорит: «Область обзора, которая напрямую взаимодействует с автоматическим макетом». Но меня это не удовлетворило, я хочу знать Практическое использование этой новой вещи.
У кого-нибудь есть подсказка?
Заключительный абзац из Apple doc для Безопасной зоны.
Класс UILayoutGuide предназначен для выполнения всех задач, ранее выполнявшихся фиктивными представлениями, но для более безопасного и эффективного выполнения. Руководства по макету не определяют новый вид. Они не участвуют в иерархии представлений. Вместо этого они просто определяют прямоугольную область в системе координат своего собственного представления, которая может взаимодействовать с Auto Layout.
Ответы:
Когда вид отображается на экране, это руководство отражает часть вида, которая не покрыта другим содержимым. Безопасная область представления отражает область, покрытую панелями навигации, панелями вкладок, панелями инструментов и другими предками, которые скрывают вид контроллера представления. (В tvOS безопасная область включает лицевую панель экрана, как определено
overscanCompensationInsets
свойством UIScreen.) Она также покрывает любое дополнительное пространство, определяемоеadditionalSafeAreaInsets
свойством контроллера представления . Если вид в настоящее время не установлен в иерархии видов или еще не виден на экране, руководство по компоновке всегда соответствует краям вида.Для корневого представления контроллера представления безопасная область в этом свойстве представляет всю скрытую часть содержимого контроллера представления и любые дополнительные вставки, которые вы указали. Для других представлений в иерархии представлений безопасная область отражает только ту часть этого представления, которая скрыта. Например, если представление полностью находится в безопасной области корневого представления его контроллера представления, вставки ребер в этом свойстве равны 0.
Вот простая ссылка в качестве сравнения (для создания аналогичного визуального эффекта) между существующим (сверху и снизу) руководством по макету и руководством по макету безопасной зоны.
Схема безопасной зоны:
AutoLayout
Как работать с Safe Area Layout?
Выполните следующие действия, чтобы найти решение:
Вот пример снимка, как включить макет безопасной области и редактировать ограничение.
Вот результат вышеуказанных изменений
Дизайн макетов с SafeArea
При разработке дизайна для iPhone X вы должны убедиться, что макеты занимают весь экран и не закрыты закругленными углами устройства, корпусом датчика или индикатором доступа к главному экрану.
Большинство приложений, использующих стандартные предоставляемые системой элементы пользовательского интерфейса, такие как панели навигации, таблицы и коллекции, автоматически адаптируются к новому форм-фактору устройства. Фоновые материалы простираются до краев дисплея, а элементы пользовательского интерфейса соответственно вставляются и располагаются.
Для приложений с пользовательскими макетами поддержка iPhone X также должна быть относительно простой, особенно если ваше приложение использует автоматическую компоновку и придерживается руководств по компоновке безопасной области и полей.
Вот пример кода (см. Руководство по макету безопасной области ) :
если вы создаете свои ограничения в коде, используйте свойство safeAreaLayoutGuide в UIView, чтобы получить соответствующие привязки макета. Давайте воссоздаем приведенный выше пример Interface Builder в коде, чтобы увидеть, как он выглядит:
Предполагая, что у нас есть зеленый вид как свойство в нашем контроллере вида:
У нас может быть функция для настройки представлений и ограничений, вызываемых из viewDidLoad:
Создайте ограничения начального и конечного полей, как всегда, используя layoutMarginsGuide корневого представления:
Теперь, если вы не нацелены только на iOS 11, вам нужно будет обернуть ограничения по макету безопасной области с помощью #available и вернуться к верхним и нижним руководствам по макету для более ранних версий iOS:
Результат:
После
UIView
расширения упростите работу с SafeAreaLayout программно.Вот пример кода в Objective-C :
Вот официальная документация Apple Developer для руководства по безопасной зоне
Безопасная зона необходима для обработки дизайна пользовательского интерфейса для iPhone-X. Вот базовое руководство по разработке пользовательского интерфейса для iPhone-X с использованием макета безопасной области
источник
margins
иview.leadingAnchor
: когда вы используетеlet margins = view.layoutMarginsGuide
и позже используетеmargins.leadingAnchor
, вы ограничиваете представление к полям представления. Это добавит дополнительное пространство к сторонам. Если вы этого не хотите, просто используйте,view.leadingAnchor
иview.trailingAnchor
вы не увидите ни пробела ни слева, ни справа ...Я хочу отметить то , что поймал меня первый , когда я пытался адаптировать приложение SpriteKit основе , чтобы избежать закругленные края и «бороздки» нового iPhone X, как это было предложено последним Руководства Human Interface : Новое свойство
safeAreaLayoutGuide
отUIView
потребности в быть запрошенным после того, как представление было добавлено в иерархию (например, включено-viewDidAppear:
), чтобы сообщить о значимом фрейме макета (в противном случае он просто возвращает полный размер экрана).Из документации собственности:
(акцент мой)
Если вы прочтете его еще раньше
-viewDidLoad:
,layoutFrame
руководство будет{{0, 0}, {375, 812}}
вместо ожидаемого{{0, 44}, {375, 734}}
источник
UIKit
использовало свойство topLayoutGuide & bottomLayoutGuide, которое являетсяUIView
свойствомiOS11 + использует safeAreaLayoutGuide, который также является
UIView
свойствомУстановите флажок Включить Руководство по разметке безопасной зоны из инспектора файлов.
Безопасные области помогут вам разместить ваши взгляды в видимой части общего интерфейса.
В tvOS безопасная область также включает в себя зашифрованные вставки экрана, которые представляют область, покрытую рамкой экрана.
Используйте безопасные зоны в качестве помощи для размещения вашего контента, как
UIButton
и т. Д.При разработке дизайна для iPhone X вы должны убедиться, что макеты заполняют экран и не закрыты закругленными углами устройства, корпусом датчика или индикатором доступа к главному экрану.
Убедитесь, что фоны простираются до краев экрана, и чтобы макеты с вертикальной прокруткой, такие как таблицы и коллекции, продолжались до самого дна.
Строка состояния на iPhone X выше, чем на других iPhone. Если ваше приложение предполагает фиксированную высоту строки состояния для позиционирования контента ниже строки состояния, вы должны обновить свое приложение, чтобы динамически позиционировать контент на основе устройства пользователя. Обратите внимание, что строка состояния на iPhone X не меняет высоту, когда активны фоновые задачи, такие как запись голоса и отслеживание местоположения.
print(UIApplication.shared.statusBarFrame.height)//44 for iPhone X, 20 for other iPhones
Высота домашнего индикаторного контейнера составляет 34 балла.
Как только вы активируете Safe Layout Guide, вы можете увидеть свойство ограничений безопасной области, перечисленное в конструкторе интерфейсов.
Вы можете установить ограничение с соответствующим из
self.view.safeAreaLayoutGuide
как-ObjC:
Swift:
источник
Apple представила topLayoutGuide и bottomLayoutGuide как свойства UIViewController еще в iOS 7. Они позволили вам создать ограничения, чтобы ваш контент не скрывался панелями UIKit, такими как статус, навигация или панель вкладок. Эти руководства по макету устарели в iOS 11 и заменены одним руководством по макету безопасной области.
См ссылки для получения дополнительной информации.
источник
Безопасная область - это область между элементами пользовательского интерфейса системы, такими как строка состояния, панель навигации и панель инструментов или панель вкладок. Поэтому, когда вы добавляете строку состояния в свое приложение, безопасная зона уменьшается. Когда вы добавляете панель навигации в свое приложение, безопасная зона снова уменьшается.
На iPhone X безопасная зона обеспечивает дополнительную вставку из верхнего и нижнего краев экрана в портретной ориентации, даже если полоса не отображается. В ландшафте Безопасная зона вставлена по бокам экранов и домашнего индикатора.
Это взято из видео Apple Designing для iPhone X, где они также представляют, как различные элементы влияют на безопасную зону.
источник