ios从代码中向uiscrollview添加uiview的约束

时间:2013-01-29 15:07:57

标签: ios autolayout

在我的应用程序中,我有两个我在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

你能告诉我这里我做错了什么吗? 我应该删除约束吗?我可以这样做吗?

谢谢你提前!

此致

佐利

1 个答案:

答案 0 :(得分:1)

看起来你的自定义约束和自动调整遮罩约束是冲突的。使用此行可以避免生成该行,并根据需要添加其他约束。

self.iPhoneMainScrollView.translatesAutoresizingMaskIntoConstraints = NO;