如何使用 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】:请改用titleLabel
。 font
属性在 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)
【讨论】:
【参考方案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 中已弃用。请改用
titleLabel
的font
属性。)
【讨论】:
以上是关于如何使用 Swift 更改 UIButton 的字体的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift (tvOS) 中,如何更改 UIButton 的突出显示和焦点颜色?
在 Swift 3 中突出显示(或点击)按钮时如何更改 UIButton 边框颜色?
Swift:如何在单击提交按钮时更改 UIButton 图像
如何在 Swift 中 UITest 更改 UIButton 的图像?