Modifier une contraintes

AkslAksl Membre
octobre 2016 modifié dans Objective-C, Swift, C, C++ #1

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 !


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.


  • CéroceCéroce Membre, Modérateur
    Pour compléter la réponse de Magiic:
    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.
  • AkslAksl Membre
    octobre 2016 modifié #4

    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.



    let heightConstraint = myView.heightAnchor.constraint(equalToConstant: 100)

    // heightConstraint est un NSLayoutConstraint. Tu peux utiliser cette contrainte pour jouer avec dans des animations comme le disait Ceroce par exemple en modifiant sa constante par une autre valeur.

    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.


Connectez-vous ou Inscrivez-vous pour répondre.