Что такое UILayoutGuide?
мне нужно знать о _UILayoutGuide
, например, что это такое, что он делает и почему он присутствует в иерархии UIView
как subview
почти всегда frame = (0,0,0,0)
.
3 ответов
UILayoutGuide
обычно упоминается-topLayoutGuide и-bottomLayoutGuide, это не ограничения, но они являются элементами представления, соответствующими протоколу под названием UILayoutSupport
.
вы можете найти больше информации об этом протоколе здесь. Значение часто 0, но вы должны обратить много внимания, где вы спрашиваете их в размере.
это частный класс Apple, который используется для topLayoutGuide
и bottomLayoutGuide
когда включена автоматическая компоновка. Если панель навигации непрозрачна, один из этих "видов" будет находиться в [0,0]. Если ваши навигационные панели полупрозрачны, то же самое view
обычно будет в [0,64] в портрете (20pt для строки состояния + 44pt для панели навигации). Существует аналогичная для нижней панели инструментов, если она у вас есть.
причина, по которой это делается таким образом, чтобы вы могли определить ограничения макета, которые работы с UIView
объекты.
одна вещь, чтобы заметить, если у вас есть какая-то логика, которая работает на подпанели, будьте осторожны, чтобы не включать их в расчеты. Вы можете игнорировать их, тестируя:
[subview conformsToProtocol:@protocol(UILayoutSupport)]
в iOS 9 появился новый частный класс,_UILayoutSpacer
, который не является потомком UIView
, но может использоваться для настройки ограничений. Система, похоже, работает в двойном режиме, где контроллеры, загруженные из xibs и раскадровки, все еще используют _UILayoutGuide
, в то время как контроллеры, созданные в коде, настраиваются с помощью _UILayoutSpacer
.
UILayoutGuides
UILayoutGuides
представляют прямоугольник в механизме компоновки. Они не будут отображаться в иерархии представлений, но могут использоваться как элементы в NSLayoutConstraint
.
iOS 9
в iOS 9 Apple предоставляет новый улучшенный способ управления отрицательным пространством под названием A UILayoutGuide
. А UILayoutGuide
, или руководство по компоновке, - пустой прямоугольник в макете, к которому могут быть применены ограничения для определения его отношения к другим UILayoutGuides
или UIViews
.
UILayoutGuides
нет иерархии и они не являются частью иерархии представления. Они принадлежат UIView, но они не могут владеть UIView
или еще UILayoutGuide
. UILayoutGuides не содержат CALayer
и не UIResponder
. Это означает, что в фазу рендеринга не добавляются накладные расходы на рисование, добавляя UILayoutGuide
и нет никакого влияния на UIEvent
процесс обработки, имеющего UILayoutGuide
.
источник:
- UILayoutGuide – авто-макета
- UILayoutGuide.h