我该如何在Swift中改变UILabel的字体大小?

299

label.font.pointSize 是只读属性,我不确定如何更改它。


扩展 UILabel{func font(size: CGFloat){ self.font = UIFont(descriptor: self.font.fontDescriptor, size: size) }} - Mohammad Razipour
21个回答

691

你可以这样做:

label.font = UIFont(name: label.font.fontName, size: 20)

或者像这样:

label.font = label.font.withSize(20)

这将使用相同的字体。当然,20可以是任何你想要的大小。

注意: 后者选项会覆盖当前字体的粗细为regular,所以如果您想保留字体的粗细,请使用第一种选项。

Swift 3更新:

label.font = label.font.withSize(20)

Swift 4 更新:

label.font = label.font.withSize(20)
或者
label.font = UIFont(name:"fontname", size: 20.0)

如果您使用系统字体

label.font = UIFont.systemFont(ofSize: 20.0)
label.font = UIFont.boldSystemFont(ofSize: 20.0)
label.font = UIFont.italicSystemFont(ofSize: 20.0)

5
实际上,这确实会改变字体的pointSize属性。不过,在标签重新绘制之前,pointSize立即被重置为17.0。所以要想在屏幕上真正看到不同的字体大小,还需要做更多的工作。 - Jay
1
你在任何地方设置字体为17吗?Storyboard? - Connor
1
我在我的 iPhone 5 上运行了它,你的代码可以正常工作。这一定是模拟器中的一个 bug。 - Jay
7
文档的问题很严重,我只是想查找资料却选择了谷歌搜索,因为我知道这样更快。 - Andrew Plummer
这对于iOS开发人员来说很好,但为了那些在谷歌搜索此问题的人,我会添加一条注释:UIFont在OSX版本的Cocoa中不存在。在OS X上,您需要像label.font=NSFont(name: label.font.fontName, size: 20)这样的东西。 - Michael Stern
显示剩余6条评论

73

我认为最好的方法是(如果要保持已分配给UILabel的字体不变),如下所示:

(使用Swift语言)

label.font = label.font.fontWithSize(20)

(使用 Swift 3)

label.font = label.font.withSize(20)

理想情况下,我会将这个设置放在viewDidLayoutSubviews方法中,因为它不需要每次视图出现时都更改。


40
label.font = UIFont.systemFontOfSize(20)

5
标签.字体 = UIFont.systemFont(ofSize: 20) // 在 Swift 3 中 - Pokemon
此解决方案不适用于自定义字体。它将始终返回系统字体。 - Awais Fayyaz

24

我们可以根据需要设置字体,例如,

label.font = UIFont(name: "Avenir-Light", size: 15.0)
label.font = UIFont.boldSystemFontOfSize(15)
label.font = UIFont.italicSystemFontOfSize(15)
label.font = UIFont.systemFontOfSize(17)

10

如果您只想更改字体大小,我创建了这个扩展程序。

// Add extension

extension UILabel {
    func setSizeFont (sizeFont: Double) {
        self.font =  UIFont(name: self.font.fontName, size: sizeFont)!
        self.sizeToFit()
    }
}

// Use

myLabel.setSizeFont(60)

这对我很有帮助。我改变了字体大小,在Swift 4中它可以工作。 - R. Mohan

6
您也可以这样赋值。
labelName.font = UIFont(name: "systemFont", size: 30)

5

再次提到Swift 3...

myLabel.font = myLabel.font.withSize(18)

4

如果您想使用带粗体选项的自定义字体:

nameLabel.font = UIFont(name: "GillSans-Bold", size: 27)

3

Swift-3.1

将标签的字体设置为系统默认字体,大小为12。


3
在Swift 3中,假设您的UILabel名称为myLabel,您想要更改其字体大小,请执行以下操作:
myLable.font = UIFont.systemFont(ofSize: 10)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接