问题
I am trying to change the font of a UIButton using Swift...
myButton.font = UIFont(name: "...", 10)
However .font
is deprecated and I'm not sure how to change the font otherwise.
Any suggestions?
回答1:
Use titleLabel
instead. The font
property is deprecated in iOS 3.0. It also does not work in Objective-C. titleLabel
is label used for showing title on UIButton
.
myButton.titleLabel?.font = UIFont(name: YourfontName, size: 20)
However, while setting title text you should only use setTitle:forControlState:
. Do not use titleLabel
to set any text for title directly.
回答2:
For Swift 3.0:
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)
where "boldSystemFont" and "16" can be replaced with your custom font and size.
回答3:
Dot-notation is awesome (swift 4.2) 👌
btn.titleLabel?.font = .systemFont(ofSize: 12)
回答4:
You don't need to force unwrap the titleLabel to set it.
myButton.titleLabel?.font = UIFont(name: YourfontName, size: 20)
Since you're not using the titleLabel here, you can just optionally use it and if it's nil it will just be a no-op.
I'll also add as other people are saying, the font property is deprecated, and make sure to use setTitle:forControlState:
when setting the title text.
回答5:
From the documentation:
The font used to display text on the button. (Deprecated in iOS 3.0. Use the
font
property of the titleLabel instead.)
回答6:
If you're having font size issues (your font isn't responding to size changes)...
@codester has the right code:
myButton.titleLabel!.font = UIFont(name: YourfontName, size: 20)
However, my font size wasn't changing. It turns out that I asking for a font that didn't exist ("HelveticaNeue-Regular"). It wasn't causing a crash, but seemed to be just ignoring that font statement because of it. Once I changed the font to something that does exist, changes to "size: x" did render.
回答7:
You should go through the titleLabel
property.
button.titleLabel.font
The font
property has been deprecated since iOS 3.0.
回答8:
Take a look here.
You should set the font of the button's titleLabel instead.
myButton.titleLabel!.font = UIFont(name: "...", 10)
回答9:
This works in Swift 3.0:
btn.titleLabel?.font = UIFont(name:"Times New Roman", size: 20)
回答10:
If you need to change only size (Swift 4.0):
button.titleLabel?.font = button.titleLabel?.font.withSize(12)
回答11:
we can use different types of system fonts like below
myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
myButton.titleLabel?.font = UIFont.italicSystemFont(ofSize:UIFont.smallSystemFontSize)
myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: UIFont.buttonFontSize)
and your custom font like below
myButton.titleLabel?.font = UIFont(name: "Helvetica", size:12)
回答12:
If you are setting AttributedString to the UIButton then you can do the below thing.
let attributedText = NSAttributedString(string: "Hello", attributes: [NSAttributedStringKey.font: UIFont(name: "Calibri", size: 19)])
okayButton.setAttributedTitle(attributedText, for: .normal)
回答13:
This way doesn't work now:
btn.titleLabel?.font = UIFont(name: "Helvetica", size:12)
This works:
btn.titleLabel?.font = UIFont.init(name: "Helvetica", size:12)
回答14:
Example: button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 12)
- If you want to use defaul font from it's own family, use for example: "HelveticaNeue"
- If you want to specify family font, use for example: "HelveticaNeue-Bold"
回答15:
this work for me, thanks. I want change text size only not change font name.
var fontSizeButtonBig:Int = 30
btnMenu9.titleLabel?.font = .systemFont(ofSize: CGFloat(fontSizeButtonBig))
来源:https://stackoverflow.com/questions/25002017/how-to-change-font-of-uibutton-with-swift