Je me demandais si quelqu'un pouvait m'aider avec des contraintes de programmation. Ce que je veux est:Ajouter une contrainte par programme pour éviter le chevauchement des boutons SWIFT 4
Je crée des boutons à l'intérieur d'une boucle et les boutons sont alignés horizontalement l'un à côté de l'autre. Certains boutons ont des largeurs différentes, ce qui signifie qu'un bouton peut se chevaucher sur un autre bouton. Est-il possible d'utiliser la contrainte pour empêcher le chevauchement et ajouter un espace blanc entre?
Merci à l'avance
code:
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);
}
Vous devriez jeter un oeil à la [UIStackView] (https://developer.apple.com/documentation/uikit/uistackview) – Wez
Suggestions est de ne pas ajouter des contraintes dans une boucle, vous pouvez ajouter ces boutons un dictionnaire en boucle, et puis quand la boucle se termine, ajoutez simplement ceci '[NSLayoutConstraint constraintsWithVisualFormat: @" H: | - [bouton] - (5) - [bouton] - (5) - [bouton] - | " options: 0 metrics: nil views: nil]; 'à la vue parents des boutons, enfin ces boutons obtiennent un espace blanc est' 5' ou ce que vous voulez –
@VictorJohn Salut vic, j'obtiens l'erreur suivante lors de l'utilisation de ce code: 'laissez views = [" view ": view]; NSLayoutConstraint.constraints (withVisualFormat: "H: | - [bouton] - (5) - [bouton] - (5) - [bouton] - |", options: NSLayoutFormatOptions (rawValue: 0), métriques: nil, vues: vues) '' raison: Impossible d'analyser le format de contrainte: C'est une chaîne vide. ' – LifeOS