Swift程序性约束底部边缘不起作用

时间:2015-03-25 10:40:38

标签: ios swift uiscrollview constraints nslayoutconstraint

我正在尝试在uiview的下边距和滚动视图的下边距之间设置一个程序约束。但是,xcode给了我一些错误,文本看起来最好不合适,有时它根本没有出现

所以基本上我有一个大小为400的uiview,让我们说滚动视图作为父级。 我想在滚动视图底部和uiview底部之间添加300的距离。我需要以编程方式执行此操作,因为无法确定在屏幕上给定时间将显示多少视图,因此我需要以编程方式更改它们之间的约束。

我的代码是

view.addConstraint(NSLayoutConstraint(
            item:container1,
            attribute:NSLayoutAttribute.Bottom,
            relatedBy:NSLayoutRelation.Equal,
            toItem:scrollFrame,
            attribute:NSLayoutAttribute.Bottom,
            multiplier:0,
            constant:400)
        )

但它不起作用......显然,在模拟器上,当我增加常数时,uiview从顶部或其他位置定位为400,因为它向下移动(尝试使用600)

Xcode会输出以下错误:

2015-03-25 12:38:13.342 GraficTest[6612:707546] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x7be906b0 V:|-(48)-[UIView:0x7be8e780]   (Names: '|':UIScrollView:0x7be90340 )>",
    "<NSLayoutConstraint:0x7bfd80e0 V:[UIView:0x7be8e780(257)]>",
    "<NSLayoutConstraint:0x7bf6a940 UIView:0x7be8e780.bottom == + 600>"
)

你能帮帮我吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

从错误消息中我可以推断出一些事情:

  1. 从UIScrollView
  2. 顶部放置UIView 48个点有一个约束
  3. UIView的高度限制为257点
  4. UIView底部必须放在UIScrollView底部600点以上。
  5. 由于UIScrollView将有一些高度,让我们说X,从上面的约束它应该是

    X = 48 + 257 + 600 = 905

    但显然情况并非如此,因此布局系统无法满足所有约束条件。

    通过从UIView中删除高度限制,您可以解决问题。