web-dev-qa-db-fra.com

iOS: modifier par programme la contrainte de hauteur d'un UIView

Je me demande s'il existe un moyen de récupérer par programme la contrainte de hauteur d'un UIView spécifique et de changer sa valeur dans le code? J'ai une situation où j'ai plusieurs UIViews avec quatre bords épinglés dans l'IB et des contraintes de hauteur ajoutées (IB se plaint si je ne l'ai pas fait), mais au milieu du programme, je devrais changer la hauteur de la UIViews et provoquera une baisse de UIViews dans la vue.

Je sais que je peux ctrl + glisser les contraintes de hauteur de chaque UIViews et changer leurs valeurs dans le code, mais cela me obligerait à en câbler des dizaines. Je pense donc que ce n'est pas efficace et pas évolutif en quelque sorte.

Je me demande donc s'il existe un moyen de récupérer totalement les contraintes de hauteur d'une vue spécifique à travers du code et de le changer dynamiquement?

Merci!

33
Marcus

Vous pouvez connecter cette contrainte spécifique à votre code à partir du générateur d'interface comme

enter image description here

Et NSLayoutConstraint a une propriété constante à définir qui est votre valeur de pin constante.

Si vous ajoutez vos contraintes par programme, vous pouvez certainement bénéficier de la propriété identificateur dans la classe NSLayoutConstraint. Définissez-les et parcourez-les pour obtenir cette contrainte identifired spécifique.

Comme le dit la documentation

extension NSLayoutConstraint {
    /* For ease in debugging, name a constraint by setting its identifier, which will be printed in the constraint's description.
     Identifiers starting with UI and NS are reserved by the system.
     */
    @availability(iOS, introduced=7.0)
    var identifier: String?
}
41
Ashraf Tawfeeq

Ajoutez d'abord une contrainte de hauteur à votre .h fichier:

//Add Outlet     
IBOutlet NSLayoutConstraint *ViewHeightConstraint;

Ensuite, ajoutez le code ci-dessous à votre .m fichier:

//Set Value From Here   
ViewHeightConstraint.constant = 100;
42
Bhavin Chauhan