以编程方式添加约束以防止按钮重叠SWIFT 4
问题描述:
我想知道是否有人能以编程方式帮助我。我想要的是:以编程方式添加约束以防止按钮重叠SWIFT 4
我在循环内创建按钮,并且按钮水平对齐。某些按钮的宽度不同,这意味着按钮可以与另一个按钮重叠。是否可以使用约束来防止重叠并在两者之间添加一个空白区域?
在此先感谢
代码:
for (j, _) in buttonInfo.enumerated(){
let button: UIButton = buttonArray[j]
let stackView = UIStackView();
stackView.spacing = 30;
button.tag = Int((buttonInfo[j]?.pID)!)!
button.setTitle(buttonInfo[j]?.title, for: .normal)
button.addTarget(self, action: #selector(PalletViewController.productCall), for: .touchUpInside)
let stock = Int(buttonInfo[j]!.stock)
if(stock! == 0 || stock! < 0){
button.isHidden = true;
}
let views = ["view": view, "button": button] as [String : Any]
let spacing = NSLayoutConstraint.constraints(withVisualFormat: "H:|-(10)-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views);
view.addConstraints(spacing);
}
你应该看看[UIStackView(https://developer.apple.com/documentation/uikit/uistackview) – Wez
建议是不要在一个循环中添加约束,可以在添加这些按钮一个字典while循环,然后当循环结束时,只需添加这个'[NSLayoutConstraint constraintsWithVisualFormat:@“H:| - [button] - (5) - [button] - (5) - [button] - |”选项:0度量:无视图:无];'按钮的父视图,最后这些按钮得到一个白色空间是'5'或你想要什么 –
@VictorJohn嗨vic,我得到以下错误,当使用此代码: 'let views = [“view”:view]; NSLayoutConstraint.constraints(withVisualFormat:“H:| - [button] - (5) - [button] - (5) - [button] - |”,options:NSLayoutFormatOptions(rawValue:0),metrics:nil, views:views)''理由:无法解析约束格式:它是一个空字符串.' – LifeOS