什么是_UILayoutGuide?

Sur*_*rma 12 iphone uiview ios uiview-hierarchy

我需要知道_UILayoutGuide,就像它是什么,它做什么和为什么它存在于层次结构UIViewsubview几乎总是frame = (0,0,0,0).

Leo*_*ica 21

这是一个私人的苹果类,对于其使用topLayoutGuidebottomLayoutGuide当自动布局启用.如果导航栏不透明,则其中一个"视图"将位于[0,0]中.如果您的导航栏是半透明的,view则纵向的[0,64]通常相同(状态栏为20pt,导航栏为44pt).底部工具栏有一个类似的工具,如果有的话.

它以这种方式完成的原因是您可以定义布局约束,这些约束适用于UIView对象.

需要注意的一点是,如果您有一些适用于子视图的逻辑,请注意不要将它们包含在您的计算中.您可以通过测试忽略这些:

[subview conformsToProtocol:@protocol(UILayoutSupport)]


在iOS 9上,有一个新的私有类,_UILayoutSpacer它不是后代UIView,但可用于设置约束.系统似乎在双模式下工作,其中从xib和storyboard加载的控制器仍然使用_UILayoutGuide,而在代码中创建的控制器使用_UILayoutSpacer.


And*_*rea 6

UILayoutGuide通常称为-topLayoutGuide和-bottomLayoutGuide,这些不是真正的约束,但它们是视图元素符合所谓的协议UILayoutSupport.

您可以在此处找到有关该协议的更多信息.该值通常为0,但您应该在询问其大小时给予很多关注.

  • `conformsToProtocol:@protocol(UILayoutSupport)`如果没有,你没有其他任何东西他们只是UIView (3认同)