我试过这个,但它不起作用,文本超出按钮边界.
- button.titleLabel!.adjustsFontSizeToFitWidth = true
- button.titleLabel!.numberOfLines = 0
- button.titleLabel!.minimumScaleFactor = 0.1
当我尝试以下操作时,所有文本都适合,但文本仍然是小字体:
- button.titleLabel!.font = UIFont(name: "Heiti TC",size: 9)
如何让字体自动适合按钮的大小?
- 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()
- }
解决方法
你可以试试这个:
1.根据按钮的当前字体大小定义标题大小
- let nsTitle = NSString(string:"yourButtonTitle")
- let font = button.titleLabel?.font
- let titleSize = nsTitle.sizeWithAttributes([NSFontAttributeName:font])
- if titleSize.width > button.titleLabel?.bounds.width{
- //set the appropriate font size
- }else{
- //set the appropriate font size or do nothing
- }