web-dev-qa-db-fra.com

Modifier la contrainte de hauteur par programme

Je veux modifier la contrainte de hauteur d'un UITextView par programmation, donc j'ai défini la contrainte comme une sortie dans mon contrôleur comme ceci:

@property (strong, nonatomic) IBOutlet NSLayoutConstraint *descriptionHeightConstraint;

Pour le changer, je fais ce qui suit:

self.descriptionHeightConstraint.constant = self.description.contentSize.height;

Cela fonctionne si je le fais dans viewDidAppear mais le problème avec cela est que je peux voir comment la hauteur change après la vue affichée qui n'est pas très conviviale alors j'ai essayé de le faire dans viewWillAppear mais n'a pas fonctionné là-bas, la hauteur ne change pas. L'appel setNeedsUpdateConstraints après avoir changé la contrainte n'a pas fonctionné non plus.

Pourquoi fonctionne dans viewDidAppear et non dans viewWillAppear? Une solution?

Merci d'avance!

30
mxch

Essayez plutôt de définir la constante dans viewDidLayoutSubviews.

Notez que l'utilisation de la propriété contentSize de la vue texte pour définir la hauteur de la vue texte ne fonctionne pas dans iOS 7. Voir https://stackoverflow.com/a/18837714/123926

27
bilobatum