Ios 以编程方式添加约束,以防止按钮重叠

Ios 以编程方式添加约束,以防止按钮重叠,ios,swift,xcode,uibutton,constraints,Ios,Swift,Xcode,Uibutton,Constraints,我想知道是否有人能帮我解决程序上的限制。我想要的是: 我在一个循环中创建按钮,这些按钮彼此水平对齐。有些按钮的宽度不同,这意味着一个按钮可以与另一个按钮重叠。是否可以使用约束来防止重叠,并在两者之间添加空白 提前谢谢 代码: for (j, _) in buttonInfo.enumerated(){ let button: UIButton = buttonArray[j] let stackView = UIStackView();

我想知道是否有人能帮我解决程序上的限制。我想要的是:

我在一个循环中创建按钮,这些按钮彼此水平对齐。有些按钮的宽度不同,这意味着一个按钮可以与另一个按钮重叠。是否可以使用约束来防止重叠,并在两者之间添加空白

提前谢谢

代码:

        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);


    }
按钮信息枚举()中的(j,u)的
{
let按钮:UIButton=buttonArray[j]
让stackView=UIStackView();
stackView.spacing=30;
button.tag=Int((buttonInfo[j]?.pID)!)!
button.setTitle(buttonInfo[j]?.title,用于:。正常)
button.addTarget(self,action:#选择器(PalletViewController.productCall),for:.touchUpInside)
let stock=Int(按钮信息[j]!.stock)
如果(股票!==0 | |股票!<0){
button.ishiden=true;
}
让视图=[“视图”:视图,“按钮”:按钮]作为[字符串:任意]
让间距=NSLayoutConstraint.constraints(使用VisualFormat:|-(10)-|“),选项:NSLayoutFormatOptions(rawValue:0),度量:nil,视图:视图);
视图。添加约束(间距);
}

堆栈视图是最好的选择,您也可以通过编程方式创建它。

您应该看一看建议,即不要在循环中添加约束,您可以在循环时在字典中添加这些按钮,然后在循环结束时,只需添加此
[NSLayoutConstraint constraints WithVisualFormat:@“H:|-[button]-(5)-[button]-[button]-|”选项:0度量:零视图:零]
到按钮的父视图,最后这些按钮会得到一个空白,即
5
或您的want@VictorJohn嗨,维克,我在使用这段代码时遇到了以下错误:
let views=[“view”:view];NSLayoutConstraint.constraints(使用VisualFormat:|-[button]-(5)-[button]-(5)-‌​[按钮]-|“,选项:NSLayoutFormatOptions(rawValue:0),度量值:nil,视图:views)
原因:无法解析约束格式:它是一个空字符串。
显示您的代码,以便我可以找到问题@LifeOS@VictorJohn编辑我的帖子。