如何同时获得两个同名的 UIFont

How to get two UIFont with name same time

我在我的应用程序中使用了一个字体系列,我正在尝试获得 2 种这样的字体类型。

let descriptionFont = UIFont(name: "Avenir-Book", size: 18.0) ?? UIFont.systemFont(ofSize: 18.0)
let titleFont = UIFont(name: "Avenir-Heavy", size: 22.0) ?? UIFont.boldSystemFont(ofSize: 22.0)

但无法获取第二种字体。

我正在更改行位置。

let titleFont = UIFont(name: "Avenir-Heavy", size: 22.0) ?? UIFont.boldSystemFont(ofSize: 22.0)
let descriptionFont = UIFont(name: "Avenir-Book", size: 18.0) ?? UIFont.systemFont(ofSize: 18.0)

这次别的字体没来,还是第二个!

没看懂是什么问题?

您的代码运行良好。

问题出在您在调试器中暂停时使用变量窗格。它在变量具有有意义的值之前显示变量。在它们都具有有意义的值之前,您必须通过两个赋值。另外,使用 let 会导致未使用的值被完全优化掉。

使用 "caveman debugging" 可能会更轻松:

let titleFont = UIFont(name: "Avenir-Heavy", size: 22.0) ?? UIFont.boldSystemFont(ofSize: 22.0)
let descriptionFont = UIFont(name: "Avenir-Book", size: 18.0) ?? UIFont.systemFont(ofSize: 18.0)
print(titleFont, descriptionFont)


你会看到两种字体 do 都有值,因为我们在两次赋值后打印并且我们使用这两个值。

<UICTFont: 0x7f87c2503b70> font-family: "Avenir-Heavy"; font-weight: bold; font-style: normal; font-size: 22.00pt 
<UICTFont: 0x7f87c2505340> font-family: "Avenir-Book"; font-weight: normal; font-style: normal; font-size: 18.00pt