2017-10-16 89 views
0

我想知道是否有人能以编程方式帮助我。我想要的是:以编程方式添加约束以防止按钮重叠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); 


    } 
+1

你应该看看[UIStackView(https://developer.apple.com/documentation/uikit/uistackview) – Wez

+1

建议是不要在一个循环中添加约束,可以在添加这些按钮一个字典while循环,然后当循环结束时,只需添加这个'[NSLayoutConstraint constraintsWithVisualFormat:@“H:| - [button] - (5) - [button] - (5) - [button] - |”选项:0度量:无视图:无];'按钮的父视图,最后这些按钮得到一个白色空间是'5'或你想要什么 –

+0

@VictorJohn嗨vic,我得到以下错误,当使用此代码: 'let views = [“view”:view]; NSLayoutConstraint.constraints(withVisualFormat:“H:| - [button] - (5) - [button] - (5) - [button] - |”,options:NSLayoutFormatOptions(rawValue:0),metrics:nil, views:views)''理由:无法解析约束格式:它是一个空字符串.' – LifeOS

回答

相关问题