SF UI Text-Light(新旧金山)字体不起作用

时间:2015-09-24 13:18:43

标签: ios objective-c xcode fonts uilabel

我正在尝试更改标签的字体,但它没有使用字体名称:new new sancisco。

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

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

如果我使用它可以正常工作

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

但新旧金山的字体并不起作用。我不知道我错过了什么:(

enter image description here

5 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:5)

我尝试记录系统字体并找到字体名称" .SFUIText-Light" ,所以

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

这是工作。

答案 2 :(得分:4)

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

答案 3 :(得分:2)

重要,真的。

使用此代码,它非常非常有用。有了它,您可以知道字体的真实名称。

let fontFamilyNames = UIFont.familyNames

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

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

我给你看一个例子。

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

Screenshot 1: Font file

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

Screenshot 2: Info plist

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

Screenshot 3: Debug output

因此,您可以输入以下字体名称:

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

使用此代码。它节省了我的时间。 (我认为)非常有用!

答案 4 :(得分:1)

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

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

Apple特别要求开发人员不再依赖系统字体的字体名称或文件系统表示。

另外,我编写了一个库,用于在应用程序中使用SF字体的许多特殊功能。随意查看: https://github.com/djfitz/SFFontFeatures