2016-01-05 6 views
6

Quando cambia il valore attualeScaleFactor di un NSStringDrawingContext?Quando adjustFontSizeToFitWidth o boundingRectWithSize modificano context.actualScaleFactor?

The documentation says:

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

+0

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

risposta

0

fare questo in viewDidAppear ... che ha funzionato per me

0

lo stesso problema di @RanLearns.

Dopo aggiungere myButton.titleLabel!.minimumScaleFactor = 0.1 ha funzionato per me

Problemi correlati