ChatGPT解决这个技术问题 Extra ChatGPT

如何使用 Swift 更改 UIButton 的字体

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

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

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

有什么建议么?


g
gi097

请改用 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 子类?
r
ruthless_g

对于 Swift 3.0:

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

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


S
Sentry.co

点符号很棒👌

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

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

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

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

只需确保您的按钮具有 default 样式以使其适用,否则上述内容将被系统忽略。

https://i.stack.imgur.com/RINpu.png


如果它没有默认样式怎么办...?
如果没有默认样式,系统会忽略上述设置的字体
哇。今天学到了新东西...
我给你我的赞成票,因为你很棒
我想知道苹果是否故意这样做。谢谢这对我有帮助。
P
Petr Lazarev

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

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

t
teradyl

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

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

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

正如其他人所说,我还将添加,不推荐使用 font 属性,并确保在设置标题文本时使用 setTitle:forControlState:


a
andrewlundy

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

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

否则,您将使用:

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


z
zneak

documentation

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


D
Dave G

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

@codester 有正确的代码:

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

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


S
Sultan Ali

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

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)

C
Community

看看here

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

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

C
Chris Wagner

您应该通过 titleLabel 属性。

button.titleLabel.font

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


B
Bugs

这适用于 Swift 3.0:

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

A
Anirudha Mahale

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

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

j
janaz

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

如果你想使用它自己家族的默认字体,例如使用:“HelveticaNeue”

如果要指定系列字体,请使用例如:“HelveticaNeue-Bold”


R
RealNmae

这种方式现在不起作用:

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

这有效:

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

m
mahasam

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

var fontSizeButtonBig:Int = 30

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


2
23shay83

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