Wann ändert sich der actualScaleFactor eines NSStringDrawingContext?Wann ändert sich "configSizeToFitWidth" oder "boundingRectWithSize" den context.actualScaleFactor?
„Wenn Sie einen benutzerdefinierten Wert in der minimumScaleFactor Eigenschaft angegeben, nach vollendeter Zeichnung, enthält diese Eigenschaft den Faktorwert tatsächlichen Maßstab, der verwendet wurde um die Zeichenfolge zu ziehen.“
Mein Code:
myButton.titleLabel!.font = UIFont(name: "AmericanTypewriter-Bold", size: 40)
myButton.titleLabel?.adjustsFontSizeToFitWidth = true
myButton.setTitle("\(textString)", forState: .Normal)
let attributes = [NSFontAttributeName : myButton.titleLabel!.font]
let attributedString = NSMutableAttributedString(string:textString, attributes:attributes)
let context = NSStringDrawingContext()
context.minimumScaleFactor = myButton.titleLabel!.minimumScaleFactor
print("context: \(context.actualScaleFactor)")
let resultingRect = attributedString.boundingRectWithSize(myButton.titleLabel!.bounds.size, options: .UsesLineFragmentOrigin, context: context)
print("actual context after drawing: \(context.actualScaleFactor)")
//want to get the font size after adjustsFontSizeToFitWidth has done its magic:
//let actualFontSize = myButton.titleLabel!.font.pointSize * context.actualScaleFactor
Konsolenprotokoll sowohl für Text, geschrumpft und mehr Text ohne passt werden, dass die Beschriftung der Breite zu passen, sind beide gleich eingestellt:
context: 0.0
actual context after drawing: 1.0
Alle Idee, welchen Schritt ich vermisse, um einen echten scaleFactor aus dem Kontext zu bekommen, nachdem der Text an das Label angepasst wurde?
Danke zu flink für die Übersetzung. Es funktioniert gut für mich. Ich habe ein UILabel mit tatsächlicher Schriftgröße 70pt, minimalem Skalierungsfaktor 0,1, und "justsToFit" auf true gesetzt. Als ich den Code AFTER viewDidAppear ausführte, zeigte meine Konsolenausgabe: "context: 0.0 aktueller Kontext nach dem Zeichnen: 0.36 adjustedFontSize: 14.4". Und tatsächlich, wenn ich diese adjustedFontSize auf die Schriftart meines Labels angewendet habe (nachdem "justsToFit" auf "false" gesetzt wurde), ändert sich beim Ändern des Textes die Schriftgröße nicht. – ObjectiveTC