我正在使用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的帧的一部分的图像。您可以看到影片的边缘对齐,并且可以看到2的底边没有对齐。
有什么解释吗?
即使我使用等宽字体,iOS是否也可能将字距调整应用到SKLabelNode?
最佳答案
从iOS 9开始,默认情况下所有字体都使用比例数字。
如果您使用的是UILabel
,则可以使用opt into monospaced digits,但据我所知,还没有SKLabelNode
的解决方案。
这段WWDC2015视频(第26分钟)中的更多信息:https://developer.apple.com/videos/play/wwdc2015/804/
关于ios - 为什么iOS等宽字体不能像这样显示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30940999/