Comment renvoyer un CGSize texte multiligne à partir de la nouvelle méthode iOS 7 sizeWithAttributes?
Je voudrais que cela produise les mêmes résultats que sizeWithFont: constrainedToSize.
NSString *text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eu urna quis lacus imperdiet scelerisque a nec neque. Mauris eget feugiat augue, vitae porttitor mi. Curabitur vitae sollicitudin augue. Donec id sapien eros. Proin consequat tellus in vehicula sagittis. Morbi sed felis a nibh hendrerit hendrerit. Lorem ipsum dolor sit."
CGSize textSize = [text sizeWithAttributes:@{ NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:16.0] }];
Cette méthode ne produit que la hauteur d'une seule ligne de texte.
objective-c
ios7
morcutt
la source
la source
Réponses:
Eh bien, vous pouvez essayer ceci:
la source
@{...}
. Comment appelle-t-on ceci?sizeWithFont:constrainedToSize:
méthode originale qui était obsolète. Apple doit vraiment nous détester. Dans tous les cas, +1.MAXFLOAT
place deCGFLOAT_MAX
?var size = textToMeasure.boundingRectWithSize( CGSizeMake(width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes:attrs, context:nil).size
Voici comment je l'ai fait:
la source
Swift 2.3:
Swift 4:
la source
Voici ma méthode pour traiter les deux situations, va dans une
NSString
catégorie.la source
Pour Xamarin.iOS:
la source
Si vous avez le texte, la police, numberOfLines et la largeur de votre jeu d'étiquettes, cette méthode renvoie la taille de votre étiquette:
la source
Comme alternative, si vous regardez
UITextView
, vous pouvez toujours utiliser laNSLayoutManager
méthode:Vous pouvez également trouver la hauteur de ligne pour une police donnée par:
la source
[En tant que nouvel utilisateur, je ne peux pas publier de commentaire sur la réponse de @ testing, mais pour rendre sa réponse (pour xamarin.ios) plus utile]
Nous pouvons renvoyer un CGRect et n'utiliser que le paramètre de hauteur pour l'élément d'interface graphique que nous ciblons UIButton etc. en passant tous les paramètres dont nous avons besoin comme ci-dessous
la source
utiliser la
ceilf
méthode pour gérer correctementla source