在SnapKit中,两个视图可以相互隔开吗?

Sme*_*lap 2 swift snapkit

我希望在屏幕上水平地分隔未知数量的按钮.我想知道我是否可以互相创建他们的间距.例如,下面的代码可以工作吗?

    let button1 = UIButton()
    let button2 = UIButton() 
    superview.addSubview(button1)
    superview.addSubview(button2)
    button1.snp_makeConstraints { (make) -> Void in
        make.height.equalTo(100)
        make.top.equalTo(50)
        make.left.equalTo(superview.snp.left)
        make.right.equalTo(button2.snp.right)
        make.width.lessThanOrEqualToSuperview()
    }

    button2.snp_makeConstraints { (make) -> Void in
       make.width.lessThanOrEqualToSuperview()
       make.height.equalTo(100)
       make.top.equalTo(50)
       make.left.equalTo(button1.snp.left)
       make.right.equalTo(superview.snp.right)
    }
Run Code Online (Sandbox Code Playgroud)

par*_*par 6

在这种情况下,您应该使用UIStackView带水平轴的a.

也就是说,如果你想使用SnapKit,有很多方法可以做到这一点.我推荐的是这样的:

let count = 3  // or buttons.count if you have an array of buttons

button1.snp.makeConstraints { make in
    make.width.equalToSuperview().multipliedBy(1.0 / count)
    make.leading.equalToSuperview()
    make.top.equalToSuperview().offset(50) // or whatever
    make.height.equalTo(100)
}

button2.snp.makeConstraints { make in
   make.width.top.height.equalTo(button1)
   make.leading.equalTo(button1.snp.trailing)
}

button3.snp.makeConstraints { make in
   make.width.top.height.equalTo(button1)
   make.leading.equalTo(button2.snp.trailing)
   make.trailing.equalToSuperview()
}
Run Code Online (Sandbox Code Playgroud)

请注意我分别使用leadingtrailing不是leftright.这是一个很好的习惯,以便您必须本地化从右到左的语言.然后您的按钮将按照用户设备的自然顺序进行布局.