我正在使用SpriteKit并在我的iOS应用程序中通过SKLabelNode呈现计时器,并在更新功能中更新。当计数增加时,我不希望数字左右移动,所以我尝试使用Courier New。它的效果比Avenir好得多,但是某些数字的宽度仍有细微的波动。 (6和9比其他数字略宽。)我在几个不同的实验中看到了这些波动,我试过了:
我提交了类似“哪个字体具有统一宽度数字”的查询,但我能找到的所有答案只是说“使用等宽字体”。 (请参阅https://graphicdesign.stackexchange.com/questions/13148/which-fonts-have-the-same-width-for-every-character或Monospace Font - Not really Monospace?)
我的代码非常简单。我像这样设置了scoreNode:
scoreNode = SKLabelNode(fontNamed: "Courier New")
scoreNode.fontSize = 65
scoreNode.fontColor = UIColor.blackColor()
scoreNode.text = "0"
scoreNode.position = CGPoint(x: patternPane.midX, y: patternPane.midY)
patternPaneNode.addChild(scoreNode)
然后我像这样更新分数:
scoreNode.text = "\(viewControllerDelegate!.getScore())"
这是一个覆盖框架的图像,显示28,部分框架显示为29.您可以看到电影的边缘排成一行,您可以看到2s的底部没有对齐。
有任何解释吗?
即使我使用等宽字体,iOS是否可能将字距调整应用于SKLabelNode? p>
答案 0 :(得分:0)
自iOS 9起,所有字体默认使用比例数字。
如果您使用UILabel
,则可以opt into monospaced digits,但据我所知,SKLabelNode
没有解决方案。
此WWDC2015视频(第26分钟)中的更多信息:https://developer.apple.com/videos/play/wwdc2015/804/