ios - 以编程方式快速添加两个 View 之间的垂直间距

标签 ios swift uiview constraints nslayoutconstraint

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

this is what i want to create

我想为这些 View 添加边距,以便第一个 View 位于顶部,下一个 View 位于第一个 View 的下方,等等,

我写了这样的代码:

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

第一个 View 具有其中 toItem 是当前 View Controller 的约束并且它可以工作,但是第二个 View 不能以这种方式工作,它只是将其绘制在第一个 View 之上,我想要它要低于它,我能做到这一点的唯一方法是在 constant: 0 中输入 View 的高度,这是我不喜欢的

有什么建议吗?

最佳答案

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

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

您将 SecondView 的顶部附加到 FirstView 的顶部,这样它们就会位于顶部,而不是您希望 SecondView 的顶部到 FirstView 的底部。

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

常数是距离。

关于ios - 以编程方式快速添加两个 View 之间的垂直间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36596800/

相关文章:

ios - 变量在 URLSESSION 中不可用

ios - Swift 中基于之前 View Controller 的 If 语句

swift - 在 Swift 中查找 View 内标签的 X 值位置

ios - UIView 的 clipsToBounds 和 CALayer 的 masksToBounds 是什么关系?

ios - Realm 无法在 Xcode 9.2 上使用 SIGNAL SIGABRT

ios - 防止 UINavigationItem 的 TitleView 闪烁

ios AppDelegate 属性声明

swift - 没有像右 View 那样向文本字段添加标签

ios - 自定义导航控件

ios - 如何通过 convertPoint toview 从父 View 中找出 subview 的确切位置