旧金山字体+SpriteKit

问题描述 投票:0回答:3

目前可以在 SpriteKit 的

SKLabelNode
中使用 iOS 9 的新 San Francisco 字体吗? Apple 明确要求我们不要按名称实例化字体,但这是
SKLabelNode
提供选择字体的唯一方法。

ios fonts sprite-kit
3个回答
3
投票

通过

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字体。别搞混了。


0
投票

这对我来说效果很好(在 iOS 14.5 中):

SKLabelNode(
  attributedText: NSAttributedString(
    string: "My text",
    attributes: [.font: UIFont.systemFont(ofSize: 16, weight: .bold)]
  )
)

请注意,您还可以从所有不同系统字体的粗细中进行选择。


0
投票

不是答案,但我需要帮助..你们中有人可以将 Sans Francisco 半粗体字体与 iOS 16.4 版本表情符号合并为 ttf 文件吗?我想用它作为我的系统字体..谢谢!祝你有美好的一天

© www.soinside.com 2019 - 2024. All rights reserved.