如何用Swift更改UIButton的字体

时间:2014-07-28 18:39:20

标签: ios uibutton swift uifont

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

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

但是{@ 1}}已被弃用,我不知道如何更改字体。

有什么建议吗?

16 个答案:

答案 0 :(得分:336)

请改用titleLabel。 iOS 3.0中不推荐使用font属性。它在Objective-C中也不起作用。 titleLabel是用于在UIButton上显示标题的标签。

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

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

答案 1 :(得分:61)

Swift 3.0

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

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

答案 2 :(得分:27)

点符号很棒(快速4.2)

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

答案 3 :(得分:8)

您无需强行打开titleLabel来设置它。

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

由于你没有在这里使用titleLabel,你可以选择使用它,如果它是零则只是一个无操作。

我还会像其他人一样说,不推荐使用font属性,并确保在设置标题文字时使用setTitle:forControlState:

答案 4 :(得分:6)

来自documentation

  

用于在按钮上显示文本的字体。 (在iOS 3.0中不推荐使用。请改用titleLabelfont属性。)

答案 5 :(得分:5)

如果您遇到字体大小问题(您的字体没有响应尺寸更改)......

@codester有正确的代码:

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

但是,我的字体大小没有变化。事实证明,我要求一个不存在的字体(“HelveticaNeue-Regular”)。它没有导致崩溃,但似乎只是因为它忽略了那个字体语句。一旦我将字体更改为确实存在的字体,就会对“size:x”进行更改。

答案 6 :(得分:4)

看看here

您应该设置按钮的标题字体,而不是

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

答案 7 :(得分:4)

您应该浏览titleLabel属性。

button.titleLabel.font

自iOS 3.0以来,font属性已被弃用。

答案 8 :(得分:4)

这适用于Swift 3.0:

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

答案 9 :(得分:3)

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

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

答案 10 :(得分:3)

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

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)

答案 11 :(得分:3)

在Swift 5中,您可以使用点符号来实现更快的语法:

myButton.titleLabel?.font = .systemFont(ofSize: 14, weight: .medium)

否则,您将使用:

myButton.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .medium)

答案 12 :(得分:2)

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

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

答案 13 :(得分:1)

这种方法现在不起作用:

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

这有效:

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

答案 14 :(得分:1)

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

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

答案 15 :(得分:0)

为我工作,谢谢。我只希望更改文本大小而不更改字体名称。

var fontSizeButtonBig:Int = 30

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