Modifier une contraintes
Aksl
Membre
Bonjour,
Je cherche à modifier le multiplier d'une contrainte après que celui-ci ai été initialisé au chargemenent de l'application.
Pour être plus précis, j'aimerais que lorsque je clique sur un bouton, la hauteur d'une UIView s'agrandisse.
Actuellement j'ai ça :
view_1.heightAnchor.constraint(equalTo: self.heightAnchor, multiplier: 0.87).isActive = true
Quelle est la solution la plus propre à adopter ?
- Supprimer la contrainte et la re définir
- Créer une animation ?
- Autre ?
Merci d'avance pour vos réponses !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu peux créer une contrainte UILayoutConstraint qui est relié à la contrainte de hauteur définit sur ton xib et modifier sa constante quand tu le souhaites.
1) on peut tirer une outlet sur une contrainte définie dans le xib/storyboard
2) on peut animer les contraintes à l'intérieur des blocs d'animation de UIView.
Merci à tous les deux pour votre réponse !
Je n'ai actuellement rien définie dans le storyboard.
Tout en ligne de code.
ça fonctionne pareil ?
En fait ma réflexion est surtout :
Quelle est la manière la plus opti ? Qu'est ce qui est fait en règle générale ?
Contexte : Pour ma part, j'ai fixé une contrainte sur un élément que je souhaite ensuite déplacer.
Oui en ligne de code c'est pareil. Si c'est pour animer la hauteur de ta vue par exemple, en utilisant les LayoutAnchor comme t'as l'air de les utiliser la fonction que tu utilises pour fixer une taille avec une constante par exemple te retourne un NSLayoutConstraint.
Je ne pense pas qu'il y a une façon plus optimisé mais en règle général les contraintes sont fixés sur un storyboard ou xib car c'est plus facile et visuel. Maintenant avec les Anchor c'est bien plus simple de le faire par code même si je pense que ça reste sous pratiqué en raison de projets qui ne supportent pas forcément la version qu'elle embarque.