Wie kann ich NSStringDrawingContext dazu bringen, Text zu verkleinern?

Ich versuche, die zugewiesene Zeichenfolgen-API von iOS 6 zu verwenden, um die Textgröße zu berechnen und die Schriftgröße bei Bedarf zu verkleinern. Ich kann es jedoch nicht zum Laufen bringen, wie es in der Dokumentation steht.

NSString *string = @"This is a long text that doesn't shrink as it should";

NSStringDrawingContext *context = [NSStringDrawingContext new];
context.minimumScaleFactor = 0.5;

UIFont *font = [UIFont fontWithName:@"SourceSansPro-Bold" size:32.f];

NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.lineBreakMode = NSLineBreakByClipping;

NSDictionary *attributes = @{ NSFontAttributeName: font,
                              NSParagraphStyleAttributeName: paragraphStyle };

NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:self.title attributes:attributes];

CGRect rect = [attributedString boundingRectWithSize:CGSizeMake(512.f, 512.f) options:NSStringDrawingUsesLineFragmentOrigin context:context];

NSLog(@"rect: %@, context: %@", NSStringFromCGRect(rect), context.debugDescription);

Der Text wird jedoch nicht verkleinert und abgeschnitten.actualScaleFactor ist immer1. Die Protokollergebnisse sind:

rect:{{0, 0}, {431.64801, 80.447998}}, context:<NSStringDrawingContext: 0x14e85770> minimumScaleFactor:0.500000 minimumTrackingAdjustment:0.000000 actualScaleFactor:1.000000 actualTrackingAdjustment:0.000000 totalBounds:{{0, 0}, {431.64801, 80.447998}}

Das Ergebnis ist dasselbe, wenn ich die tatsächliche Zeichenmethode und nicht die Messmethode verwende. Wenn ich den Absatzstil entferne, wird der Text umgebrochen und nicht verkleinert. Wenn ich den Absatzstil entferne UND eine Größe wähle, die nur eine Textzeile zulässt, wird der Text ebenfalls abgeschnitten, anstatt verkleinert zu werden. Was ist falsch? Es gibt sehr wenig Dokumentation oder Online-Ressourcen, die sich damit befassenNSStringDrawingContext. Und ich versuche, die Verwendung von zu vermeidensizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode: welches in iOS 7 veraltet ist.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage