I have tried this but it didn't work, the text is out of the button boundaries.
button.titleLabel!.adjustsFontSizeToFitWidth = true
button.titleLabel!.numberOfLines = 0
button.titleLabel!.minimumScaleFactor = 0.1
When I try the following, all the text fits, but the text remains in a small font:
button.titleLabel!.font = UIFont(name: "Heiti TC", size: 9)
How can I get the font to automatically fit the size of the button?
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()
}
That is the code I have so far it gets the answers from a plist file
button. titleLabel. adjustsFontSizeToFitWidth = YES; With this all labels adjust the text will size.
You can omit UIControlState part and just write like button. setTitle("my text here", forState: . Normal) .
You can customize width and height of button using storyboard in Xcode. Just select your button and open this window. After that just add the height constraints.
Adjust font size to fit width
Swift
self.button.titleLabel?.adjustsFontSizeToFitWidth = true
Objective-C
[self.button.titleLabel setAdjustsFontSizeToFitWidth:YES];
This worked for me:
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
You can try this:
1.define the title size based on the current font size of your button
let nsTitle = NSString(string:"yourButtonTitle")
let font = button.titleLabel?.font
let titleSize = nsTitle.sizeWithAttributes([NSFontAttributeName:font])
2.check whether your title fits the button title label :
if titleSize.width > button.titleLabel?.bounds.width{
//set the appropriate font size
}else{
//set the appropriate font size or do nothing
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With