185 votes

UITextView qui se développe en texte à l’aide de disposition automatique

J'ai une vue qui est mis complètement à l'aide de disposition automatique par programmation. J'ai un UITextView dans le milieu de la vue avec les éléments ci-dessus et ci-dessous. Tout fonctionne bien, mais je veux être en mesure d'étendre UITextView comme l'ajout de texte. Cela devrait pousser tout ci-dessous en bas comme il se dilate.

Je sais comment le faire, c'est le "ressorts et les jambes de force", mais est-il une mise en page automatique manière de procéder? La seule façon que je peux penser à est de en retirant puis en ajoutant la contrainte de tous les temps il a besoin pour grandir.

584voto

stant Points 885

Je viens dans cette question, je ne sais pas si je suis hors sujet, mais si vous définissez votre UITextView à défilement « pas » :

il sera en mesure de calculer une taille intrinsèque, permettant ainsi la mise en page automatique déplacer les autres éléments en soi, alors c’est à vous de configurer le droit de contraintes.

(sur iOS 7)

38voto

user2815751 Points 249

UITextView ne fournit pas un intrinsicContentSize, donc vous devez sous-classe il et en fournir une. Pour faire croître automatiquement, invalider l’intrinsicContentSize en layoutSubviews. Si vous utilisez autre chose que le contentInset par défaut (que je ne recommande pas), vous devrez peut-être ajuster le calcul intrinsicContentSize.


32voto

ancajic Points 705

La vue contenant UITextView sera affectée sa taille avec `` par la mise en forme automatique. Donc, voilà ce que j’ai fait. Le superview est initialement configuré toutes les autres contraintes comme ils devraient l’être, en fin de compte, j’ai mis une contrainte particulière pour hauteur de UITextView et je l’ai enregistré dans une variable d’instance.

Dans la `` méthode, j’ai ensuite changé la valeur de la constante.

7voto

MattDiPasquale Points 23842

Vous pouvez aussi le faire sans le sous-classement `` . Jetez un oeil sur mon répondre comment faire je taille un UITextView à son contenu sur iOS 7 ?

Utilisez la valeur de cette expression :

mise à jour le de la de hauteur `` .

-1voto

Alan McKean Points 1

BTW, j'ai construit une expansion UITextView à l'aide d'une sous-classe et dominante intrinsèque de la taille du contenu. J'ai découvert un bug dans UITextView que vous pouvez étudier à votre propre mise en œuvre. Voici le problème:

L'expansion de l'affichage de texte serait pousser vers le bas pour s'adapter à la croissance de texte si vous tapez une seule lettre à la fois. Mais si vous collez une bande de texte, il ne serait pas pousser vers le bas, mais le texte ne faites défiler vers le haut et le texte en haut était hors de vue.

La solution: Remplacer setBounds: dans votre sous-classe. Pour une raison inconnue, le collage causé les limites.de l'origine.y de la valeur de la non-zee (33 dans tous les cas que j'ai vu). Donc j'ai remplacé setBounds: de toujours définir les limites.de l'origine.y à zéro. Fixe le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X