0x7f9481c9d990-AMBIGUOUSLAYOUTforUIView:0x7f9481c9d990.minX{id:13},UIView:0x7f9481c9d990.minY{id:16}||*_UILayoutGuide :0x7f9481c9e160-AMBIGUOUSLAYOUTfor_UILayoutGuide:0x7f9481c9e160.minY{id:17}||*_UILayoutGuide:0x7f9481c9ebb0 -AMBIGUOUSLAYOUTfor_UILayoutGuide:0x7f9481c9ebb0.minY{id:27} 其中AMBIGUOUS相关的视图就是约束有问题的。
重点:iOS 11以上才可以 ContentLayout 和 FrameLayout 介绍 ---- ContentLayout 和 FrameLayout 都继承UILayoutGuide。 UILayoutGuide: LayoutGuide我们在SafeArea的时候都使用过,简单的讲就是一个虚拟矩形,为了方便布局。
constraint in view.superview.constraints) { if (([constraint.firstItem isKindOfClass:UILayoutGuide.class constraint in view.superview.constraints) { if (([constraint.firstItem isKindOfClass:UILayoutGuide.class
. */ @property(nonatomic,readonly,strong) UILayoutGuide *safeAreaLayoutGuide API_AVAILABLE(ios(11.0) refer to the untranslated content area of the scroll view. */ @property(nonatomic,readonly,strong) UILayoutGuide frameLayoutGuide.centerXAnchor) refer to the untransformed frame of the scroll view. */ @property(nonatomic,readonly,strong) UILayoutGuide 占位视图类UILayoutGuide 在iOS9以前两个视图之间的间距和间隔是无法支持浮动和可伸缩设置的,以及我们可以需要在两个视图之间保留一个浮动尺寸的空白区域,解决的方法是在它们中间加入一个透明颜色的 UIView来进行处理,不管如何只要是View都需要进行渲染和绘制从而有可能一定程度上影响程序的性能,而在iOS9以后提供了一个占位视图类UILayoutGuide,这个类就像是一个普通的视图一样可以为它设置约束
应该是在第四层,而现在感觉不像,我们可以打印一下看下究竟:
NSLog(@"%@",self.view.subviews);打印如下:
( "<_UILayoutGuide : 0x7f8893602e80; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x60800003e220>>", "<_UILayoutGuide
0x7f9481c9d990- AMBIGUOUS LAYOUT for UIView:0x7f9481c9d990.minX{id: 13}, UIView:0x7f9481c9d990.minY{id: 16}| | *_UILayoutGuide :0x7f9481c9e160- AMBIGUOUS LAYOUT for _UILayoutGuide:0x7f9481c9e160.minY{id: 17}| | *_UILayoutGuide:0x7f9481c9ebb0 - AMBIGUOUS LAYOUT for _UILayoutGuide:0x7f9481c9ebb0.minY{id: 27} 其中AMBIGUOUS 相关的视图就是约束有问题的。
AMBIGUOUS LAYOUT for UIView:0x7f9481c9d990.minX{id: 13}, UIView:0x7f9481c9d990.minY{id: 16} | | *_UILayoutGuide :0x7f9481c9e160- AMBIGUOUS LAYOUT for _UILayoutGuide:0x7f9481c9e160.minY{id: 17} | | *_UILayoutGuide :0x7f9481c9ebb0- AMBIGUOUS LAYOUT for _UILayoutGuide:0x7f9481c9ebb0.minY{id: 27} 其中 AMBIGUOUS 相关的视图就是约束有问题的
UIBezierPath, UIEvent, UIWindow, UIViewController, UIColor, UIGestureRecognizer, UIMotionEffect, CALayer, UILayoutGuide layoutMarginsDidChange NS_AVAILABLE_IOS(8_0); 296 297 /** 视图间距引导 */ 298 @property(readonly,strong) UILayoutGuide *> *layoutGuides NS_AVAILABLE_IOS(9_0); 570 571 /** 向视图中添加布局向导 */ 572 - (void)addLayoutGuide:(UILayoutGuide *)layoutGuide NS_AVAILABLE_IOS(9_0); 573 574 /** 向视图中添加布局向导 */ 575 - (void)removeLayoutGuide:(UILayoutGuide exerciseAmbiguityInLayout NS_AVAILABLE_IOS(6_0); 621 @end 622 623 /** 约束调试,只在DEBUG环境下被调用 */ 624 @interface UILayoutGuide
constraint in view.superview.constraints) { if ([constraint.firstItem isKindOfClass:[UILayoutGuide constraint in view.superview.constraints) { if ([constraint.firstItem isKindOfClass:[UILayoutGuide
constraint in view.superview.constraints) { if ([constraint.firstItem isKindOfClass:[UILayoutGuide constraint in view.superview.constraints) { if ([constraint.firstItem isKindOfClass:[UILayoutGuide
UIBezierPath, UIEvent, UIWindow, UIViewController, UIColor, UIGestureRecognizer, UIMotionEffect, CALayer, UILayoutGuide
145 145); autoresize = RM+BM; autoresizesSubviews = NO; layer = <CALayer: 0x7c078630>> | | <_UILayoutGuide : 0x7c079130; frame = (0 0; 0 20); hidden = YES; layer = <CALayer: 0x7c0792d0>> | | <_UILayoutGuide 305 87; 285 285); autoresize = RM+BM; autoresizesSubviews = NO; layer = <CALayer: 0x7ca7ce70>> | <_UILayoutGuide : 0x7ca8bd30; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x7ca814d0>> | <_UILayoutGuide:
layoutMarginsGuide则获取到只读的UILayoutGuide对象。
layoutMarginsGuide则获取到只读的UILayoutGuide对象。
. */ @property(nonatomic,readonly,strong) UILayoutGuide *safeAreaLayouGuide API_AVAILABLE(ios(11.0),
layoutMarginsGuide则获取到只读的UILayoutGuide对象。