Redimensionner la taille de police pour remplir UITextView?
Comment pourrais-je définir la taille de police du texte dans un UITextView tel qu'il remplit l'ensemble de la UITextView? J'aimerais à l'utilisateur de taper leur texte, puis faites-le texte de remplir la totalité de la UITextView.
Toute aide est très appréciée!
Vous devez vous connecter pour publier un commentaire.
J'ai converti dementiazz réponse à Swift:
viewDidLayoutSubviews
Ce, dans une catégorie sur UITextView, devrait faire l'affaire. Pourquoi vous avez besoin de la fudgefactor, voir ce post
Approche similaire à Arie Litovski de répondre, mais sans les sous-classements (ou l'utilisation d'une catégorie) et n'utilisant pas de
contentSize
qui n'a pas de retour de la hauteur correcte pour le rendu du texte pour moi. Testé sur iOS 7:L'approche est de réduire la taille de la police jusqu'à ce que le texte rentre tout juste dans le cadre de l'affichage de texte.
Si vous allez l'utiliser dans la production, vous devrez:
Essayer cela, c'est beaucoup plus simple:
Voici mon exemple de code. En gros, j'ai vérifier l'attendre à la taille pour savoir si la taille de police ont besoin d'augmenter ou de diminuer. Vous devez ajouter UITextViewDelegate à votre classe pour s'assurer qu'il rouages
expectFont
à latextView's
font
avant de le modifier... puis vous retournez à la non modifiéfont
? Est-ce que pour éviter le saut en haut et en bas de la taille du texte?textView.font
ne change pas (parce queexpectFont
est en fait d'originetextView.font
). Mais si, pendant l'exécution d'au moins 1 fois,expectFont
est changé et nous avons besoin de le mettre à jour après la finition de la boucle. Je pourrais faire un indicateur pour déterminer alors qu'il est ou pas, mais je n'ai pas. Au lieu de cela, je groupe dans la dernière lignetextView.font = expectFont
expectFont
. Ensuite vous augmentez letextView
's de la police par un point, mais lorsque que la boucle while s'arrête, vous voyez quetextView
de police à ce qu'il était...textView.font
est sertie, la condition du while est fausse (je suis en utilisant textView pour calculer l'état directement). Que dire de la police, je suis réglage n'est pas correct, et je dois revenir à attendre la police.J'ai converti dementiazz s & Mat Frear la réponse de Swift 3:
pour swift 3
Cette propriété est disponible uniquement sur UITextFields. Pour ce faire, dans un UITextView, vous devez constamment surveiller le texte et ajuster manuellement la taille de la police, comme cela a changé.
Dans le viewDidLoad:
Vous devez ajouter UITextViewDelegate:
J'ai converti Matt Frear la réponse de Swift 4.1 extension pour UITextView:
}
Une version mise à jour de @Arie Litovski du code. Cela fonctionne dans iOS7 et plus tard, et s'étend de la taille de la police à la fois en haut et en bas afin que le texte s'adapte.
Ici est une conversion de la dementiazz de l' et Matt Frear de l' réponse à Swift 5. Mettre cette fonction en viewDidLayoutSubviews, la référence à la UITextView qui est de la police que vous souhaitez redimensionner dynamiquement.
U peut facilement le faire en utilisant
self.textview.font
=diviser textview.cadre.taille.la hauteur sur certains constante en fonction de vos besoins..
Voici une solution pour Swift 4 (basé sur Arie Litovski de réponse), vous pouvez placer ce code dans
textViewDidChange(_ textView: UITextView)
délégué méthode :Révision à la baisse de la police :
Et la généralisation de la police:
Vous pouvez modifier la
fontSize < 12
etfontSize > 15
pour s'adapter à vos besoins minimum et maximum de la taille de la police.