Wie können Sie eine mehrzeilige Text-CGSize von der neuen iOS 7-Methode sizeWithAttributes zurückgeben?
Ich möchte, dass dies die gleichen Ergebnisse wie sizeWithFont: beschränkteToSize liefert.
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] }];
Diese Methode erzeugt nur die Höhe für eine einzelne Textzeile.
objective-c
ios7
Morcutt
quelle
quelle
Antworten:
Nun, Sie können dies versuchen:
quelle
@{...}
. Wie heißt es?sizeWithFont:constrainedToSize:
Methode, die veraltet war. Apple muss uns wirklich hassen. In jedem Fall +1.MAXFLOAT
stattCGFLOAT_MAX
?var size = textToMeasure.boundingRectWithSize( CGSizeMake(width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes:attrs, context:nil).size
So habe ich es gemacht:
quelle
Swift 2.3:
Swift 4:
quelle
Hier ist meine Methode, um mit beiden Situationen umzugehen, geht in eine
NSString
Kategorie.quelle
Für Xamarin.iOS:
quelle
Wenn Sie den Text, die Schriftart, numberOfLines und die Breite Ihres Etikettensatzes festgelegt haben, gibt diese Methode die Größe Ihres Etiketts zurück:
quelle
Alternativ
UITextView
können Sie immer die folgendeNSLayoutManager
Methode verwenden:Sie können die Zeilenhöhe für eine bestimmte Schriftart auch ermitteln, indem Sie:
quelle
[Als neuer Benutzer kann ich keinen Kommentar zur Antwort von @ testing veröffentlichen, aber um seine Antwort (für xamarin.ios) nützlicher zu machen]
Wir können ein CGRect zurückgeben und nur den Höhenparameter für das GUI-Element verwenden, auf das wir UIButton usw. abzielen. Geben Sie alle Parameter ein, die wir wie unten benötigen
quelle
Verwenden Sie die
ceilf
Methode, um ordnungsgemäß zu verwaltenquelle