iOS7 UITextView contentsize.hauteur de rechange
Je suis le portage de l'une des apps de iOS 6.1 d'iOS 7. Je suis en utilisant une mise en page où il y a un UITextView
qui a une largeur fixe, mais c'est la hauteur est basée sur son contentsize. Pour iOS 6.1 vérification de la contentsize.de la hauteur et de la définir comme le textview de trame de hauteur a été assez, mais il ne fonctionne pas sur iOS 7.
Comment puis-je créer un UITextView
avec une largeur fixe, mais la dynamique de la hauteur en fonction du texte qu'il les montre?
NOTE: je suis la création de ces points de vue à partir du code, pas avec Interface Builder.
Vous devez vous connecter pour publier un commentaire.
Avec ce code suivant, vous pouvez changer la hauteur de vos UITextView en fonction d'une largeur fixe (il fonctionne sur iOS 7 et les versions antérieures) :
Avec cette fonction, vous pourrez prendre un NSAttributedString et une largeur fixe pour revenir à la hauteur nécessaire.
Si vous voulez calculer l'image à partir d'un texte avec une police spécifique vous, plus besoin d'utiliser le code suivant :
Vous pouvez ajouter que
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
sur votre préfixe.pch fichier dans votre projet:Vous pouvez également remplacer le test précédent
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)
par :NSStringDrawingUsesFontLeading
est extra(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
m'aide beaucoup.Cela a fonctionné pour moi pour iOS6 et 7:
textView.bounds.size.height
Dans iOS7,
UITextView
utiliseNSLayoutManager
à la mise en page du texte:désactiver
allowsNonContiguousLayout
de fixercontentSize
:Utiliser cette petite fonction
Ma dernière solution est basée sur HotJard mais comprend à la fois en haut et en bas des encarts de conteneur de texte au lieu d'utiliser 2*fabs(textView.contentInset.haut de page) :
Il y a de plus simple solution, à l'aide de cette méthode:
UPD: le travail juste pour l'affichage du texte (isEditable = NON)
usedRectForTextContainer
méthode renvoie à la même hauteur.Il suffit de ne pas oublier le lineFragmentPadding
solution simple -
textView.isScrollEnabled = false
fonctionne parfaitement lorsque l'intérieur d'un autre de défilement de la vue, ou tableView cellule avec
UITableViewAutomaticDimension
@Ana, @Blake Hamilton solution dans swift.
La bonne chose pour moi est que cela revient aussi le bon
contentSize
, quandisScrollEnable
est définie sur false. Paramètre à false est retourné à l'affichage du texte de la taille de l'image au lieu de la taille du contenu.