Quando cambia il valore attualeScaleFactor di un NSStringDrawingContext?Quando adjustFontSizeToFitWidth o boundingRectWithSize modificano context.actualScaleFactor?
"Se è stato specificato un valore personalizzato nella proprietà minimumScaleFactor, in sede di elaborazione è completa, questa proprietà contiene il valore di fattore di scala reale che è stato utilizzato per disegnare la stringa."
Il mio codice:
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
registro console sia per il testo che si adatta senza essere ridotto e il testo più lungo che è regolato per adattarsi larghezza dell'etichetta sono entrambi lo stesso:
context: 0.0
actual context after drawing: 1.0
Qualsiasi idea di quale passaggio mi manca per ottenere un fattore di scala reale dal contesto dopo che il testo è stato ridimensionato per adattarlo all'etichetta?
Grazie per la traduzione a rapida. Funziona bene per me. Ho un UILabel con dimensione del carattere effettiva 70pt, fattore di scala minimo 0.1 e "adjustsToFit" impostato su true. Dopo l'esecuzione del codice AFTER viewDidAppear, l'output della mia console mostrava: "context: 0.0 contesto attuale dopo il disegno: 0.36 adjustedFontSize: 14.4". E infatti quando ho applicato questo adjustFontSize al font della mia etichetta (dopo aver impostato "adjustsToFit" su false), la modifica del testo non cambia la dimensione del font. – ObjectiveTC