如何用Swift改变UIButton的字体

问题描述 投票:0回答:20

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

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

但是

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

有什么建议吗?

ios uibutton swift uifont
20个回答
554
投票

请使用

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

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

但是,在设置标题文本时,您应该只使用

setTitle:forControlState:
。不要使用
titleLabel
直接设置任何标题文本。


111
投票

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

button.titleLabel?.font = .systemFont(ofSize: 19.0, weight: .bold)

只要确保您的按钮具有

default
样式即可适用,否则系统会忽略上述内容。

enter image description here


77
投票

对于 Swift 3.0

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

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


73
投票

点表示法很棒👌

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

11
投票

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

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

11
投票

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

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

否则,你将使用:

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


10
投票

您不需要强制展开 titleLabel 来设置它。

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

由于您在这里没有使用 titleLabel,因此您可以选择使用它,如果它为 nil,则它只是一个空操作。

我还会像其他人所说的那样添加,字体属性已被弃用,并确保在设置标题文本时使用

setTitle:forControlState:


9
投票

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

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

8
投票

来自文档

用于在按钮上显示文本的字体。 (在 iOS 3.0 中已弃用。请改用

font
titleLabel
属性。)


7
投票

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

@codester 有正确的代码:

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

但是,我的字体大小没有改变。事实证明,我要求的字体不存在(“HelveticaNeue-Regular”)。它并没有导致崩溃,但似乎只是因此忽略了该字体声明。一旦我将字体更改为确实存在的字体,“size: x”的更改就会呈现。


7
投票

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

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)

6
投票

看看这里

您应该设置按钮标题标签的字体。

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

5
投票

您应该浏览

titleLabel
属性。

button.titleLabel.font

自 iOS 3.0 起,

font
属性已被弃用。


5
投票

这适用于 Swift 3.0:

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

3
投票

示例:

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

  • 如果您想使用自己系列的默认字体,请使用例如:“HelveticaNeue”
  • 如果您想指定系列字体,请使用例如:“HelveticaNeue-Bold”

3
投票

要使用故事板执行此操作,请在选择按钮时转到属性检查器。 在顶部的第三个字段(“标题”)中,选择“属性”。 这将显示字体下拉列表,您可以在其中轻松更改字体。


3
投票

斯威夫特5

myButton.titleLabel?.font = UIFont(name: "yourCustomFont", size: CGFloat(yourFontSize))

2
投票

这个方法现在不行了:

 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))


0
投票

如果您不使用“默认”样式,则只是

configuration?.titleTextAttributesTransformer = UIConfigurationTextAttributesTransformer { inc in
    var out = inc
    out.font = .systemFont(ofSize: 11)
    return out
}

如果您使用“默认”样式,那就是

titleLabel?.font = .systemFont(ofSize: 11)

提醒...

“风格”只是故事板上使用的一个词。来设定所谓的“风格”,

button.configuration = .plain()
button.configuration = .gray()
button.configuration = .filled()
button.configuration = .tinted()
button.configuration = nil // MEANS "DEFAULT"
© www.soinside.com 2019 - 2024. All rights reserved.