如何使用Swift更改UIButton的字体


207

我正在尝试使用Swift更改UIButton的字体...

myButton.font = UIFont(name: "...", 10)

但是.font已弃用,否则我不确定如何更改字体。

有什么建议?

Answers:


421

使用titleLabel代替。该font属性在iOS 3.0中已弃用。它在Objective-C中也不起作用。titleLabel是用于在上显示标题的标签UIButton

myButton.titleLabel?.font =  UIFont(name: YourfontName, size: 20)

但是,在设置标题文本时,您只能使用setTitle:forControlState:。请勿titleLabel用于直接为标题设置任何文本。


1
你们知道我为什么要“拆开”吗?我的标签?像这样... myButton.titleLabel!.font = ...
DanMoore 2014年

beacause titleLabel是可选属性。感谢在beta中,它不是。
codester 2014年

4
这种方法允许我更改字体名称/样式,但是更改size属性没有区别。
Dave G

7
您无需强行解开标签。myButton.titleLabel?.font = ...将起作用,因为如果titleLabel为nil,它将是无操作
teradyl

1
为什么此方法不适用于自定义UIbutton子类?
穆尼布

69

对于Swift 3.0

button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)

其中“ boldSystemFont”和“ 16”可以替换为您自定义的字体和大小。


44

点符号很棒(Swift 4.2)👌

btn.titleLabel?.font = .systemFont(ofSize: 12)

@mahasam UIFont可以推断出来,这个答案与其他答案相同,只是没有UIFont(但是因为它是由编译器推断出来的,但是是一样的)PD:我总是尝试用这种方式编写,但是只是为了让你知道那是一样的
Pablo Sanchez Gomez '18

1
@mahasam:“点符号”与推断的相同。是的,这是一个很好的养成习惯。与其他答案不同的是,它比其他答案更简洁。海事组织(IMO)
信徒

9

您无需强行拆开titleLabel即可进行设置。

myButton.titleLabel?.font = UIFont(name: YourfontName, size: 20)

由于您不在此处使用titleLabel,因此可以选择使用它,如果它为nil,则将成为空操作。

就像别人说的那样,我还将添加font属性已弃用,并确保setTitle:forControlState:在设置标题文本时使用。


7

文档中

用于在按钮上显示文本的字体。(iOS 3.0中已弃用。请使用的font属性titleLabel改为。)


5

如果您遇到字体大小问题(您的字体没有响应大小变化)...

@codester具有正确的代码:

myButton.titleLabel!.font =  UIFont(name: YourfontName, size: 20)

但是,我的字体大小没有变化。原来,我要的是不存在的字体(“ HelveticaNeue-Regular”)。它并没有导致崩溃,但是似乎只是因为它而忽略了该字体声明。一旦将字体更改为确实存在的字体,更改为“大小:x”就可以渲染。


5

我们可以使用不同类型的系统字体,如下所示

myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
myButton.titleLabel?.font = UIFont.italicSystemFont(ofSize:UIFont.smallSystemFontSize)
myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: UIFont.buttonFontSize)

和您的自定义字体如下

    myButton.titleLabel?.font = UIFont(name: "Helvetica", size:12)


4

在这里看看

您应该改为设置按钮的titleLabel的字体。

myButton.titleLabel!.font = UIFont(name: "...", 10)

4

在Swift 3.0中有效:

btn.titleLabel?.font = UIFont(name:"Times New Roman", size: 20) 

4

如果将AttributedString设置为UIButton,则可以执行以下操作。

let attributedText = NSAttributedString(string: "Hello", attributes: [NSAttributedStringKey.font: UIFont(name: "Calibri", size: 19)])
okayButton.setAttributedTitle(attributedText, for: .normal)

4

如果只需要更改大小(Swift 4.0):

button.titleLabel?.font = button.titleLabel?.font.withSize(12)

2

例: button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 12)

  • 如果要使用其家族的默认字体,请使用例如“ HelveticaNeue”
  • 如果要指定家族字体,请使用例如:“ HelveticaNeue-Bold”

1

这种方式现在不起作用:

 btn.titleLabel?.font = UIFont(name: "Helvetica", size:12)

这有效:

 btn.titleLabel?.font = UIFont.init(name: "Helvetica", size:12)

0

这项工作对我来说,谢谢。我只想更改文本大小,而不更改字体名称。

var fontSizeButtonBig:Int = 30

btnMenu9.titleLabel?.font = .systemFont(ofSize:CGFloat(fontSizeButtonBig))

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.