Swift SnapKit 如何使用相对位置布局 UIView

标签 swift snapkit

func setupPosition() {
        box.snp.makeConstraints{(make)->Void in
        make.edges.equalTo(view).inset(UIEdgeInsetsMake(64+20, 20, 250, 20))
        }

        textField.snp.makeConstraints{(make)->Void in
            make.edges.equalTo(box).inset(UIEdgeInsetsMake(5, 5, 150, 5))

        }

        stackBoxOne.snp.makeConstraints{(make)->Void in
                make.top.equalTo(box).offset(textField.frame.size.height)
                make.left.equalTo(box).offset(5)
                make.bottom.equalTo(box).offset(-90)
                make.right.equalTo(box).offset(-5)
        }
    }

我想将stackBoxOne放在textField下。但上面的代码不起作用。我该如何修改代码?感谢您抽出时间。

最佳答案

您不能在 makeConstraints 闭包中使用 textField.frame,因为此时 View 尚未布局。因此,高度为 0,并且 stackBoxOne 的偏移量为 0

要将 View 放置在另一个 View 下方,请将其顶部约束连接到另一个 View 的底部约束。所以在你的情况下:

stackBoxOne.snp.makeConstraints{(make)->Void in
     make.top.equalTo(textField.snp.bottom)
     make.left.equalTo(box).offset(5)
     make.bottom.equalTo(box).offset(-90)
     make.right.equalTo(box).offset(-5)
}

除此之外,您还可以将左右约束设置为等于 textFields 左右约束,如下所示:

stackBoxOne.snp.makeConstraints{(make)->Void in
    make.top.equalTo(textField.snp.bottom)
    make.left.right.equalTo(textField)
    make.bottom.equalTo(box).offset(-90)
}

关于Swift SnapKit 如何使用相对位置布局 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540407/

相关文章:

ios - 如何快速制作反向倒计时或正数计时器?

ios - 使用动画从按钮位置放大和缩小 UIView

swift - 当宽度为设备宽度且高度为原始图像的高度时,UIImageView 中的图像将被裁剪

swift - 自动布局 [Snapkit] 更改旋转约束

swift - UIScrollView 破坏 subview 中的手势识别器

swift - 为 Swift 中的运算符转义闭包

ios - 无法创建 3 列 UICollectionView

ios - 如何获取多点触控UITapGestureRecognizer的多个位置

iOS Auto Layout 在空间不够的时候保持最小的间隙,在空间足够的时候尽可能的占用空间

ios - Swift 中的左对齐垂直 UILabel