2016-06-27 11 views
8

Ich habe versucht, aber es hat nicht funktioniert, der Text ist außerhalb der Schaltfläche Grenzen.Auto die Schriftgröße ändern, um die Schaltfläche in swift

button.titleLabel!.adjustsFontSizeToFitWidth = true 
button.titleLabel!.numberOfLines = 0 
button.titleLabel!.minimumScaleFactor = 0.1 

Wenn ich versuche, die folgende, den ganzen Text passt, aber der Text bleibt in einer kleinen Schrift:

button.titleLabel!.font = UIFont(name: "Heiti TC", size: 9) 

Wie kann ich die Schriftart erhalten automatisch die Größe der Schaltfläche passen?

func nextQuestion() { 

    let currentQuestion = mcArray![questionIdx] 

    answers = currentQuestion["Answers"] as! [String] 
    correctAnswer = currentQuestion["CorrectAnswer"] as? String 
    question = currentQuestion["Question"] as? String 

    titlesForButtons() 
} 

func titlesForButtons() { 
    for (idx,button) in answerButtons.enumerate() { 
     button.titleLabel!.lineBreakMode = .ByWordWrapping 

     button.titleLabel!.font = UIFont(name: "Heiti TC", size: 5) 

     button.titleLabel!.numberOfLines = 0 

     button.titleLabel!.minimumScaleFactor = 0.1 

     button.titleLabel!.baselineAdjustment = .AlignCenters 

     button.titleLabel!.textAlignment = NSTextAlignment.Center 

     button.setTitle(answers[idx], forState: .Normal) 
     button.enabled = true 
     button.backgroundColor = UIColor(red: 83.0/255.0, green: 184.0/255.0, blue: 224.0/255.0, alpha: 1.0) 
    } 

    questionLabel.text = question 
    startTimer() 
} 

, dass der Code habe ich so weit es die Antworten aus einer plist-Datei diese Sie können

+0

'adjustsFontSizeToFitWidth = true' für mich gearbeitet. – keithbhunter

+0

Es hat nicht funktioniert der Text hatte die gleiche Größe und stieg aus der Tastengrenze – acekidd

Antwort

4

bekommt versuchen:

1.define die Größe Titel auf der aktuellen Schriftgröße anhand Ihrer Taste

let nsTitle = NSString(string:"yourButtonTitle") 
let font = button.titleLabel?.font 
let titleSize = nsTitle.sizeWithAttributes([NSFontAttributeName:font]) 

2.check ob Ihr Titel auf den Button Titellabel passt:

if titleSize.width > button.titleLabel?.bounds.width{ 

    //set the appropriate font size 

}else{ 

    //set the appropriate font size or do nothing 
} 
0

UIButton Font-Skalierung kann sehr unbeständig sein, ich hatte in der Vergangenheit Probleme damit. Was ich getan habe, war die Anzahl der Zeilen gleich 1, was für mich funktionierte.

2

Dieser arbeitete für mich:

button.titleLabel!.font = UIFont(name: "Avenir Next", size: 20) 
    button.titleLabel!.adjustsFontSizeToFitWidth = true 
    button.titleLabel!.numberOfLines = 1 
    button.titleLabel!.minimumScaleFactor = 0.1 
    button.clipsToBounds = true 
+1

Danke, es funktionierte für mich perfekt! ;-) –

Verwandte Themen