2016-01-05 5 views
6

Wann ändert sich der actualScaleFactor eines NSStringDrawingContext?Wann ändert sich "configSizeToFitWidth" oder "boundingRectWithSize" den context.actualScaleFactor?

The documentation says:

„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?

+0

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

Antwort

0

tun dies in viewDidAppear ... Das ist für mich gearbeitet

0

das gleiche Problem wie @RanLearns.

Nach myButton.titleLabel!.minimumScaleFactor = 0.1 hinzufügen es funktionierte für mich

Verwandte Themen