作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 SpriteKit 中,有没有办法让 SKLabelNode
看起来大小相同,而不管设备如何,例如:在 iPhone 5 上看起来与 6Plus 大小相同?
我试过用别人推荐的这个方法:
let textRect = CGRect(x: 0, y: 0, width: frame.width * 0.4, height: frame.height * 0.045)
let scalingFactor = min(textRect.width / text.frame.width, textRect.height / text.frame.height)
text.fontSize *= scalingFactor
但它并不能使所有文本的大小都相同,因为像“man”这样的词没有像“High”这样的词那么高(因为它的“y”和“h”突出)。
那么有没有一种方法可以让文本在所有设备上看起来都一样大呢?目前我像这样创建 SKLabelNode:
let text = SKLabelNode(text: "Start")
text.fontSize = 30
text.position = CGPoint(x: 0, y: 0)
addChild(text)
最佳答案
这里的问题是您正在尝试缩放 fontSize,而这对于复杂的十进制数字并不能很好地发挥作用。相反,在您创建标签后,只需将其缩放到您用来缩放其他所有内容的比例因子即可
let text = SKLabelNode(text: "Start")
text.fontSize = 30
text.position = CGPoint(x: 0, y: 0)
text.xScale = xScaleFactor
text.yScale = yScaleFactor
其中 xScaleFactor
和 yScaleFactor
是您用来确定比例的因子。 (这个数字应该只需要计算一次,然后存储,如果你不这样做,我建议做那个改变)
基本上在您提供的代码中是这样完成的:
let textRect = CGRect(x: 0, y: 0, width: frame.width * 0.4, height: frame.height * 0.045)
let scaleFactorX = textRect.width / text.frame.width
let scaleFactorY = textRect.height / text.frame.height
关于ios - 如何在 SpriteKit 的所有设备上使文本大小相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34404261/
我是一名优秀的程序员,十分优秀!