SF UI Text-Light(New san francisco) 字体不工作

SF UI Text-Light(New san francisco) font doesn't work

我正在尝试更改标签的字体,但它不起作用 name:new New san francisco。

将该字体导入项目并添加 info.plist 这是我的代码

labelname.font = [UIFont fontWithName:@"SF UI Text-Light" size:12];

如果我使用它就可以了

labelname.font = [UIFont fontWithName:@"HelveticaNeue" size:12];

但是 New san francisco 字体不起作用。我不知道我想念什么:(

请使用 https://www.dropbox.com/s/dyw7kl0mtrftjix/San-Francisco-UI-and-COMPACT.zip?dl=0 这个 link 并下载 .ttf 而不是 .otf 文件。我相信你得到了结果,祝你好运。

发生这种情况是因为您使用了错误的字体系统名称。尝试使用

labelname.font = [UIFont fontWithName:@"SFUIText-Light" size:12];

如何查找系统字体名称请参见此处 Adding custom fonts to iOS app finding their real names

我尝试登录系统字体,发现字体名称是“.SFUIText-Light”,所以

labelname.font = [UIFont fontWithName:@".SFUIText-Light" size:12];

这是工作。

添加更新:您应该在 UIFont 中使用系统字体 API。例如:

UIFont.systemFont(ofSize: 12, weight: .light)

Apple 明确告诉开发人员不再依赖字体名称或系统字体的文件系统表示。

顺便说一句,我制作了一个库,用于在您的应用程序中使用 SF 字体的许多特殊功能。随意检查一下: https://github.com/djfitz/SFFontFeatures

重要,真的。

使用这段代码,非常非常有用。有了它你就可以知道字体的真实名称了。

let fontFamilyNames = UIFont.familyNames

for familyName in fontFamilyNames {
    print("------------------------------")
    print("Font Family Name = [\(familyName)]")

    let names = UIFont.fontNames(forFamilyName: familyName)
    print("Font Names = [\(names)]")
}

我给你举个例子。

字体文件(您必须将其添加到您的项目中,就像任何其他文件一样):

"Info.plist"中的字体文件名(与文件扩展名完全相同的名称):

最后在日志中输出Debug(由代码创建)

所以,你可以这样写字体名称:

headerLabel.font = UIFont(name:"SFProDisplay-Heavy", size:30)

使用此代码。它节省了我的时间。很有用(我觉得)!