2017-10-16 24 views
0

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


    } 
+1

Vous devriez jeter un oeil à la [UIStackView] (https://developer.apple.com/documentation/uikit/uistackview) – Wez

+1

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 –

+0

@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

Répondre