将"SF UI Display Bold"设置为标签字体。

17

我在设置标签字体为SF UI Display Bold方面遇到问题。

我只想在一个布尔值为false的情况下进行此设置,而不是持久性地设置它。

if (value.messageReaded == false) {
    cell.subjectLabel?.font = UIFont(name:"SF UI Display Bold", size: 17.0)
}

很遗憾,我的方法在这种字体上不起作用。

你们中有人知道在Swift中“SF UI Display Bold”字体的正确标题吗?

谢谢!


SF字体的Display变量用于大屏幕文本显示,而不是用于iPhone标签。 - Fogmeister
2个回答

47

理论上,您可以直接调用字体名称来使用该字体。该字体的名称是.SFUIDisplay-Bold

然而,苹果公司不鼓励使用这种方式,并表示这些字体名称是私有的,随时可能会更改。

使用旧金山字体的官方方法是调用systemFont,它会自动为您提供旧金山字体:

let font = UIFont.systemFont(ofSize: 17)

要使字体变得更轻或更粗,您可以请求字体的加粗程度:

let mediumFont = UIFont.systemFont(ofSize: 17, weight: UIFont.Weight.medium)
let lightFont = UIFont.systemFont(ofSize: 17, weight: UIFont.Weight.light)
let boldFont = UIFont.systemFont(ofSize: 17, weight: UIFont.Weight.bold)

有很多字体重量可供选择:

UIFont.Weight.ultraLight
UIFont.Weight.thin
UIFont.Weight.light
UIFont.Weight.regular
UIFont.Weight.medium
UIFont.Weight.semibold
UIFont.Weight.bold
UIFont.Weight.heavy
UIFont.Weight.black

17
值得注意的是,系统将根据您请求的字号自动为您选择“显示”或“文本”变体。根据WWDC演示,如果您请求小于20的系统字体大小,则会获得“文本”变体,如果您请求大于等于20的系统字体大小,则会获得“显示”变体。 - Charles A.
5
有没有一种非"hacky"的方式可以在字号小于20时获取“SF UI Display”字体? - Pavel Alexeev

2
根据Joern的回答,已更新为Swift 4:
let font = UIFont.systemFont(ofSize: 17)
let mediumFont = UIFont.systemFont(ofSize: 17, weight: UIFont.Weight.medium)
let lightFont = UIFont.systemFont(ofSize: 17, weight: UIFont.Weight.light)
let boldFont = UIFont.systemFont(ofSize: 17, weight: UIFont.Weight.bold)

还可以查看苹果文档


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