Comment modifier les contraintes Auto Layout après leur définition lors de l'utilisation de constraintEqualToAnchor ()?
J'essaie de configurer une vue avec mise en page automatique des contraintes en utilisant constraintEqualToAnchor()
:
override func viewDidLoad() {
super.viewDidLoad()
let myView = UIView()
myView.backgroundColor = UIColor.orangeColor()
myView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(myView)
myView.leftAnchor.constraintEqualToAnchor(view.leftAnchor).active = true
myView.trailingAnchor.constraintEqualToAnchor(view.trailingAnchor).active = true
myView.topAnchor.constraintEqualToAnchor(view.topAnchor).active = true
myView.bottomAnchor.constraintEqualToAnchor(view.bottomAnchor).active = true
/******************************************/
/* I try to change one of the constraints */
/******************************************/
myView.leftAnchor.constraintEqualToAnchor(view.rightAnchor, constant: -100).active = true
}
Dans la dernière ligne de code, j'ai essayer de changer l'une des contraintes. J'ai pensé qu'il pourrait fonctionner, mais il donne une erreur dans le journal de la console
"<NSLayoutConstraint:0x7fb53a5180d0 H:|-(0)-[UIView:0x7fb53a5190b0](LTR) (Names: '|':UIView:0x7fb53a519240 )>",
"<NSLayoutConstraint:0x7fb53a51f660 H:[UIView:0x7fb53a519240]-(-100)-[UIView:0x7fb53a5190b0](LTR)>",
"<NSLayoutConstraint:0x7fb53a711ee0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7fb53a519240(414)]>"
Lors de l'utilisation de constraintEqualToAnchor()?
quelle est la bonne façon de changer la contrainte plus tard, après que j'ai mis?
source d'informationauteur Joe Huang
Vous devez vous connecter pour publier un commentaire.
Vous devez désactiver la précédente contrainte lors de l'activation d'un nouveau de sorte que vous ne finissent pas plus contraignantes votre point de vue. Pour ce faire, stocker une référence à chacune des contraintes comme une propriété dans votre
ViewController
et puis définissez laactive
propriété de l'ancien contrainte àfalse
avant la création et l'activation de la nouvelle contrainte:Swift 2.x:
Mise à jour pour Swift 3 syntaxe:
Voici un exemple de déclaration d'une contrainte
c
qui sera mentionné plus tard dans le temps. Nous avons mis une nouvelle valeur de la constante, et ensuite appelerlayout
sur le superview.Ici est de donner l'exemple avec l'instruction SI la modification d'un Empilervoir et lorsqu'un segmenté cliqué: