目前可以在 SpriteKit 的
SKLabelNode
中使用 iOS 9 的新 San Francisco 字体吗? Apple 明确要求我们不要按名称实例化字体,但这是 SKLabelNode
提供选择字体的唯一方法。
通过
fontName
的属性UIFont
获取系统字体名称:
let myLabel = SKLabelNode(fontNamed:UIFont.systemFontOfSize(45.0).fontName)
字体名称打印结果:
.SFUIDisplay-Regular
编辑:
就WWDC 2015 视频:介绍新系统字体而言,PDF 第 298 页说不要按名称访问系统字体,例如
let myFont = UIFont.systemFontOfSize(mySize)
// …later in the code…
let myOtherFont = UIFont.fontWithName(myFont.familyName size:mySize)
更好的做法(第299页)是重复使用字体描述符,例如
let systemFont = UIFont.systemFontOfSize(mySize)
// …later in the code…
let myOtherFont = UIFont.fontWithDescriptor(systemFont.fontDescriptor()
size:mySize)
请注意,代码描述了一种情况,您需要访问之前定义的字体 (
myFont
)。为了保持App中字体的一致性,您最好使用已经定义的fontDescriptor
,而不是在不设置其属性的情况下访问完整的new字体。别搞混了。
这对我来说效果很好(在 iOS 14.5 中):
SKLabelNode(
attributedText: NSAttributedString(
string: "My text",
attributes: [.font: UIFont.systemFont(ofSize: 16, weight: .bold)]
)
)
请注意,您还可以从所有不同系统字体的粗细中进行选择。
不是答案,但我需要帮助..你们中有人可以将 Sans Francisco 半粗体字体与 iOS 16.4 版本表情符号合并为 ttf 文件吗?我想用它作为我的系统字体..谢谢!祝你有美好的一天