如何用Swift更改UIButton的字体

Ste*_*Fox 186 uibutton uifont ios swift

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

myButton.font = UIFont(name: "...", 10)
Run Code Online (Sandbox Code Playgroud)

但是.font已弃用,我不知道如何更改字体.

有什么建议?

cod*_*ter 378

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

myButton.titleLabel?.font =  UIFont(name: YourfontName, size: 20)
Run Code Online (Sandbox Code Playgroud)

但是,在设置标题文本时,您应该只使用setTitle:forControlState:.不要titleLabel用于直接为标题设置任何文本.

  • 您无需强行打开标签.`myButton.titleLabel?.font = ...`将起作用,因为如果titleLabel为零,它将只是一个无操作 (7认同)
  • 这种方法允许我更改我的字体名称/样式,但更改size属性没有任何区别. (4认同)
  • 为什么此方法不适用于自定义 UIbutton 子类? (3认同)

ati*_*oSE 105

正如这里许多人提到的,您可以使用以下内容设置字体:

button.titleLabel?.font = .systemFont(ofSize: 19.0, weight: .bold)
Run Code Online (Sandbox Code Playgroud)

只要确保您的按钮具有default样式即可适用,否则系统会忽略上述内容。

在此输入图像描述

  • 如果没有默认样式,则系统会忽略上述设置的字体 (4认同)

小智 65

对于Swift 3.0:

button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)
Run Code Online (Sandbox Code Playgroud)

其中"boldSystemFont"和"16"可以替换为您的自定义字体和大小.


eon*_*ist 40

点符号很棒(快速4.2)

btn.titleLabel?.font = .systemFont(ofSize: 12)
Run Code Online (Sandbox Code Playgroud)

  • @mahasam:“点符号”与推断的相同。是的,这是一个好习惯。它与其他答案不同,因为它比其他答案更简洁。海事组织 (3认同)

ter*_*dyl 9

您无需强制打开titleLabel来设置它.

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

既然你没有在这里使用titleLabel,你可以选择使用它,如果它没有,它只是一个无操作.

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


Ani*_*ale 9

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

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


zne*_*eak 7

文档:

用于在按钮上显示文本的字体.(在iOS 3.0中不推荐使用.使用相反的font属性titleLabel.)


Con*_*nor 6

看看这里

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

myButton.titleLabel!.font = UIFont(name: "...", 10)
Run Code Online (Sandbox Code Playgroud)


Sul*_*Ali 6

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

myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
myButton.titleLabel?.font = UIFont.italicSystemFont(ofSize:UIFont.smallSystemFontSize)
myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: UIFont.buttonFontSize)
Run Code Online (Sandbox Code Playgroud)

和您的自定义字体,如下所示

    myButton.titleLabel?.font = UIFont(name: "Helvetica", size:12)
Run Code Online (Sandbox Code Playgroud)


and*_*ndy 6

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

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

否则,您将使用:

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


Chr*_*ner 5

您应该检查一下该titleLabel物业。

button.titleLabel.font

font属性自 iOS 3.0 起已被弃用。


Dav*_*e G 5

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

@codester有正确的代码:

myButton.titleLabel!.font =  UIFont(name: YourfontName, size: 20)
Run Code Online (Sandbox Code Playgroud)

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


小智 5

这适用于 Swift 3.0:

btn.titleLabel?.font = UIFont(name:"Times New Roman", size: 20) 
Run Code Online (Sandbox Code Playgroud)


小智 5

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

button.titleLabel?.font = button.titleLabel?.font.withSize(12)
Run Code Online (Sandbox Code Playgroud)