在我的应用程序中,我有两个我在IB中创建的顶级UIViews。一个是UIViewControllers视图,它有一个子视图,它是一个UIScrollView。另一个顶级UIView是UIScrollView中的内容。这部分工作正常,我将UIScrollView的内容大小设置为其他UIView的大小,一切都在纵向模式下完美运行。 但是,如果我切换到横向模式,UIScrollView可以很好地调整大小,但其子视图保留在左上角,但我希望它位于水平中心。 所以我创建了这个约束并将其添加到UIScrollView:
NSLayoutConstraint* iPhoneTextFieldContainerAlwaysInHorizontalCenter = [NSLayoutConstraint
constraintWithItem:self.iPhoneTextFieldContainerView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.iPhoneMainScrollView
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0];
然而,当我切换到横向模式时,获得此约束异常:
( NSAutoresizingMaskLayoutConstraint:0x76dacb0 h = - & - v = - & - UIView:0x76d6eb0.width == UIViewControllerWrapperView:0x76d5b10.width, NSAutoresizingMaskLayoutConstraint:0x76d7e70 h = - & V = - &安培; UIView:0x76d3110.midX == + 160, NSLayoutConstraint:0x76d7030 UIScrollView:0x7680f10.trailing == UIView:0x76d6eb0.trailing, NSLayoutConstraint:0x76d6ff0 H:| - (0) - [UIScrollView:0x7680f10]
(姓名:'|':UIView:0x76d6eb0), NSLayoutConstraint:0x76d7330 UIView:0x76d3110.centerX == UIScrollView:0x7680f10.centerX, NSAutoresizingMaskLayoutConstraint:0x76deb70 h = - & - v = - & - UIViewControllerWrapperView:0x76d5b10.width == UINavigationTransitionView:0x76d1ab0.width, NSAutoresizingMaskLayoutConstraint:0x75a3b60 h = --- v = --- V:[UIWindow:0x91979a0(480)], NSAutoresizingMaskLayoutConstraint:0x7595510 h = - & - v = - & - UILayoutContainerView:0x76a5da0.height == UIWindow:0x91979a0.height, NSAutoresizingMaskLayoutConstraint:0x759e020 h = - & - v = - & - UINavigationTransitionView:0x76d1ab0.width == UILayoutContainerView:0x76a5da0.width)
将尝试通过违反约束来恢复 NSLayoutConstraint:0x76d7330 UIView:0x76d3110.centerX == 的UIScrollView:0x7680f10.centerX
你能告诉我这里我做错了什么吗? 我应该删除约束吗?我可以这样做吗?
谢谢你提前!
此致
佐利
答案 0 :(得分:1)
看起来你的自定义约束和自动调整遮罩约束是冲突的。使用此行可以避免生成该行,并根据需要添加其他约束。
self.iPhoneMainScrollView.translatesAutoresizingMaskIntoConstraints = NO;