In iOS 7 ist die Methode:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(NSLineBreakMode)lineBreakMode
und die Methode:
- (CGSize)sizeWithFont:(UIFont *)font
sind veraltet. Wie kann ich ersetzen
CGSize size = [string sizeWithFont:font
constrainedToSize:constrainSize
lineBreakMode:NSLineBreakByWordWrapping];
und:
CGSize size = [string sizeWithFont:font];
-sizeWithAttributes:
.Antworten:
Sie könnten dies versuchen:
Ändern Sie einfach "FONT" in "[UIFont font ....]".
quelle
NSLineBreakByWordWrapping
würde innerhalb eines gehenNSParagraphStyle
. Also zum Beispiel:NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
In den Attributen müssten Sie dann hinzufügenNSParagraphStyleAttributeName: paragraphStyle.copy
...boundingRectWithSize:options:attributes:context:
Bruchwerte zurückgegeben werden. Sie tun müssen ,ceil(textRect.size.height)
undceil(textRect.size.width)
jeweils die reale Höhe / Breite zu erhalten.Da wir sizeWithAttributes nicht für alle iOS-Versionen größer als 4,3 verwenden können, müssen wir bedingten Code für 7.0 und frühere iOS-Versionen schreiben.
1) Lösung 1:
2) Lösung 2
Die erste Lösung besteht darin, manchmal nicht den richtigen Höhenwert zurückzugeben. Verwenden Sie also eine andere Lösung. das wird perfekt funktionieren.
Die zweite Option ist recht gut und funktioniert in allen iOS-Versionen ohne bedingten Code reibungslos.
quelle
Hier ist eine einfache Lösung:
Bedarf :
Jetzt Da die
constrainedToSizeusage:lineBreakMode:
Nutzung in iOS 7.0 veraltet ist :Jetzt wird die Verwendung in einer größeren Version von iOS 7.0 wie folgt sein:
quelle
Im Folgenden finden Sie zwei einfache Methoden, die diese beiden veralteten Methoden ersetzen.
Und hier sind die relevanten Referenzen:
Wenn Sie NSLineBreakByWordWrapping verwenden, müssen Sie den NSParagraphStyle nicht angeben, da dies die Standardeinstellung ist: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSParagraphStyle_Class/index. html # // apple_ref / occ / clm / NSParagraphStyle / defaultParagraphStyle
Sie müssen die Obergrenze der Größe ermitteln, damit die Ergebnisse der veralteten Methoden übereinstimmen. https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSString_UIKit_Additions/#//apple_ref/occ/instm/NSString/boundingRectWithSize:options:attributes:context :
quelle
In den meisten Fällen habe ich die Methode sizeWithFont: ConstrainedToSize: lineBreakMode: verwendet , um die Mindestgröße für ein UILabel zu schätzen zu um seinen Text aufzunehmen (insbesondere, wenn das Etikett in einer UITableViewCell platziert werden muss) ...
... Wenn dies genau Ihre Situation ist , können Sie einfach die folgende Methode verwenden:
Hoffe das könnte helfen.
quelle
quelle
[Akzeptierte Antwort funktioniert gut in einer Kategorie. Ich überschreibe die veralteten Methodennamen. Ist das eine gute Idee? Scheint ohne Beschwerden in Xcode 6.x zu funktionieren]
Dies funktioniert, wenn Ihr Bereitstellungsziel 7.0 oder höher ist. Kategorie ist
NSString (Util)
NSString + Util.h
NSString + Util.m
quelle
aus zwei Antworten 1 + 2
quelle