在swift

时间:2016-04-13 11:21:07

标签: ios swift uiview constraints nslayoutconstraint

我有这些视图,两者都是相同的,我想以编程方式添加它们,所以我想以编程方式添加约束,我已经设法使用storyboard做同样的事情,但我想使用代码。

this is what i want to create

我想为这些视图添加边距,以便第一个位于顶部,下一个位于第一个之下,因此,

我写了这样的代码:

self.view.addConstraint(
    NSLayoutConstraint(
        item: secondView,
        attribute: .Top,
        relatedBy: .Equal,
        toItem: firstView,
        attribute: .Top,
        multiplier: 1.0,
        constant: 0
    ))

第一个视图的约束条件toItem是当前视图控制器并且它可以工作,但是第二个视图不能以这种方式工作,它只是在第一个视图的顶部绘制它,我希望它在下面它,我唯一可以做到这一点的方法是constant: 0输入视图的高度,我不喜欢

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您提供的代码是99%正确但

self.view.addConstraint(
    NSLayoutConstraint(
        item: secondView,
        attribute: .Top,
        relatedBy: .Equal,
        toItem: firstView,
        attribute: .Top,
        multiplier: 1.0,
        constant: 0
    ))

您将secondView的顶部附加到firstView的顶部,这样它们就会位于顶部,而您希望第二个View的顶部位于firstView的底部。

self.view.addConstraint(
    NSLayoutConstraint(
        item: secondView,
        attribute: .Top,
        relatedBy: .Equal,
        toItem: firstView,
        attribute: .Bottom,  <----------
        multiplier: 1.0,
        constant: 0
    ))

常数是距离。