如何使用 Swift 更改 UIButton 的字体

Posted

技术标签:

【中文标题】如何使用 Swift 更改 UIButton 的字体【英文标题】:How to change font of UIButton with Swift 【发布时间】:2014-09-20 00:58:15 【问题描述】:

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

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

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

有什么建议吗?

【问题讨论】:

【参考方案1】:

点符号很棒?

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

【讨论】:

@mahasam UIFont 被推断,这个答案与其他答案相同,但没有 UIFont (但因为它是由编译器推断的,但它是相同的) PD:我总是尝试写这种方式,但只是为了让你知道这是一样的 @mahasam:“点符号”与推断的相同。是的,这是一个好习惯。它与其他答案不同,因为它比其他答案更简洁。海事组织【参考方案2】:

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

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

否则,您将使用:

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

【讨论】:

【参考方案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)

【讨论】:

【参考方案4】:

请改用titleLabelfont 属性在 ios 3.0 中已弃用。它在 Objective-C 中也不起作用。 titleLabel 是用于在UIButton 上显示标题的标签。

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

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

【讨论】:

你们知道我为什么要“解包”吗?我的标签??像这样... myButton.titleLabel!.font = ... 因为titleLabel 是可选属性。感谢之前在测试版中它不是。 这个方法允许我改变我的字体名称/样式,但是改变 size 属性没有任何区别。 您不需要强制打开标签。 myButton.titleLabel?.font = ... 将起作用,因为如果 titleLabel 为 nil,它将只是一个空操作 为什么这个方法对自定义 UIbutton 子类不起作用?【参考方案5】:

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

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

【讨论】:

【参考方案6】:

这对我有用,谢谢。我只想更改文字大小而不更改字体名称。

var fontSizeButtonBig:Int = 30

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

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:

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

如果你想使用它自己家族的默认字体,例如:"HelveticaNeue" 如果要指定全系字体,例如使用:"HelveticaNeue-Bold"

【讨论】:

【参考方案9】:

这适用于 Swift 3.0:

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

【讨论】:

【参考方案10】:

这种方式现在行不通了:

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

这行得通:

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

【讨论】:

【参考方案11】:

对于 Swift 3.0

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

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

【讨论】:

【参考方案12】:

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

@codester 有正确的代码:

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

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

【讨论】:

【参考方案13】:

你不需要强制解开 titleLabel 来设置它。

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

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

我也会像其他人所说的那样添加,不推荐使用字体属性,并确保在设置标题文本时使用setTitle:forControlState:

【讨论】:

【参考方案14】:

看看here。

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

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

【讨论】:

【参考方案15】:

您应该通过titleLabel 属性。

button.titleLabel.font

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

【讨论】:

【参考方案16】:

来自documentation:

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

【讨论】:

以上是关于如何使用 Swift 更改 UIButton 的字体的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift (tvOS) 中,如何更改 UIButton 的突出显示和焦点颜色?

在 Swift 3 中突出显示(或点击)按钮时如何更改 UIButton 边框颜色?

Swift:如何在单击提交按钮时更改 UIButton 图像

如何在 Swift 中 UITest 更改 UIButton 的图像?

如何在 Swift 中以编程方式更改 UIButton 状态

在 Swift 中以编程方式更改 UIButton 的文本(填充)