我需要了解_UILayoutGuide,比如它是什么,它做什么,以及为什么它在UIView的层次结构中呈现为几乎总是带有frame = (0,0,0,0)的subview。
发布于 2013-10-23 08:56:10
发布于 2013-10-23 08:59:18
这是一个私有的Apple,当启用自动布局时,它用于topLayoutGuide和bottomLayoutGuide。如果您的导航栏是不透明的,这些“视图”之一将在0,0。如果您的导航条是半透明的,相同的view通常在0,64的纵向(状态栏20 in +导航条44 in )。有一个类似的底部工具栏,如果你有一个。
这样做的原因是,您可以定义布局约束,这些约束与UIView对象一起工作。
需要注意的一点是,如果您有一些在子视图上工作的逻辑,请注意不要将它们包括在计算中。您可以通过测试来忽略这些:
[subview conformsToProtocol:@protocol(UILayoutSupport)]
在iOS 9中,有一个新的私有类_UILayoutSpacer,它不是UIView的后代,但可以用来设置约束。该系统似乎是以双模式工作的,从xibs和故事板加载的控制器仍然使用_UILayoutGuide,而在代码中创建的控制器是使用_UILayoutSpacer设置的。
发布于 2015-11-06 15:50:04
UILayoutGuides
UILayoutGuides表示布局引擎中的矩形。它们不会出现在视图层次结构中,但可以用作NSLayoutConstraint中的项。
iOS 9
在iOS 9中,苹果提供了一种新的改进的控制负空间的方法,称为UILayoutGuide。布局指南(即布局指南)是布局中的一个空矩形,可以根据该矩形应用约束来定义它与其他UILayoutGuides UIViews.或的关系
UILayoutGuides没有层次结构,它们也不是视图层次结构的一部分。它们属于UIView,但不能拥有UIView或其他UILayoutGuide。UILayoutGuides不包含CALayer,也不包含UIResponder。这意味着不存在通过添加UILayoutGuide而添加到呈现阶段的绘图开销,也没有通过拥有UILayoutGuide而对UIEvent处理过程产生影响。
来源:
https://stackoverflow.com/questions/19536992
复制相似问题