gpt4 book ai didi

ios - 如何在 SpriteKit 的所有设备上使文本大小相同?

转载 作者:行者123 更新时间:2023-11-28 11:11:59 26 4
gpt4 key购买 nike

在 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

其中 xScaleFactoryScaleFactor 是您用来确定比例的因子。 (这个数字应该只需要计算一次,然后存储,如果你不这样做,我建议做那个改变)

基本上在您提供的代码中是这样完成的:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com