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);
}
你應該看看[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