【问题标题】:ios add constraints for a uiview to a uiscrollview from codeios将uiview的约束从代码添加到uiscrollview
【发布时间】:2013-01-13 04:56:12
【问题描述】:

在我的应用程序中,我有两个在 IB 中创建的顶级 UIView。一个是 UIViewControllers 视图,它有一个 UIScrollView 的子视图。另一个顶级 UIView 是要进入 UIScrollView 的内容。这部分工作正常,我将 UIScrollView 的 contentsize 设置为另一个 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

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

先谢谢了!

此致,

佐利

【问题讨论】:

    标签: ios autolayout


    【解决方案1】:

    看起来您的自定义约束和自动调整大小的蒙版约束发生冲突。使用此行来避免生成它并根据需要添加其他约束。

    self.iPhoneMainScrollView.translatesAutoresizingMaskIntoConstraints = NO;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      相关资源
      最近更新 更多