我需要知道_UILayoutGuide
它是什么,它做了什么以及为什么它几乎总是出现在UIView
as a的层次结构中。subview
frame = (0,0,0,0)
3 回答
这是一个私有的 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 提供了一种新的改进方法来控制负空间,称为UILayoutGuide
. AUILayoutGuide
或布局指南是布局中的一个空矩形,可以应用约束来定义它与其他UILayoutGuides
orUIViews
的关系。
UILayoutGuides
没有层次结构,它们不是视图层次结构的一部分。它们由 UIView 拥有,但不能拥有一个UIView
或另一个UILayoutGuide
. UILayoutGuides 不包含 aCALayer
并且它们不是UIResponder
. 这意味着通过添加 a 不会将绘图开销添加到渲染阶段,并且通过添加 a对处理过程UILayoutGuide
没有影响。UIEvent
UILayoutGuide
资源:
- UILayoutGuide - 自动布局的隐形助手
- UILayoutGuide.h