Ios 如何在SpriteKit的所有设备上使文本大小相同?
在SpriteKit中,是否有方法使Ios 如何在SpriteKit的所有设备上使文本大小相同?,ios,swift,sprite-kit,sklabelnode,Ios,Swift,Sprite Kit,Sklabelnode,在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.heig
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)
我认为这更像是一个算法问题。想想你需要在电视、iPad或iPhone设备上实现同样的功能。您应该考虑存储其绝对值,而不是实际值
公式应为存储值的
宽度=此设备的实际宽度/设备宽度
。高度也一样。然后,如果在其他设备中使用相同的图像数据。您只需将新设备的宽度/高度相乘。我认为这更像是一个算法问题。想想你需要在电视、iPad或iPhone设备上实现同样的功能。您应该考虑存储其绝对值,而不是实际值
公式应为存储值的
宽度=此设备的实际宽度/设备宽度
。高度也一样。然后,如果在其他设备中使用相同的图像数据。您只需将新设备的宽度/高度相乘。这里的问题是,您正在尝试缩放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
这里的问题是,您正在尝试缩放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
您在所有设备中的常数是多少?帧是相同的号码吗?基本上,我需要知道场景是否正在进行缩放/调整大小。我希望字体大小为屏幕高度的10%,无论它在什么设备上。所以它应该和屏幕大小成比例?我还不能回答这个问题,我需要知道你的场景是否正在调整大小是的,我相信是这样的?所有内容的大小都基于屏幕的百分比。例如,一个按钮的大小是“frame.width*0.5”,但在场景中不会发生任何变化。好的,让我们做一个简单的lol。告诉我你使用的scaleMode,以及你如何创建游戏场景你在所有设备中的常量是什么?帧是相同的号码吗?基本上,我需要知道场景是否正在进行缩放/调整大小。我希望字体大小为屏幕高度的10%,无论它在什么设备上。所以它应该和屏幕大小成比例?我还不能回答这个问题,我需要知道你的场景是否正在调整大小是的,我相信是这样的?所有内容的大小都基于屏幕的百分比。例如,一个按钮的大小是“frame.width*0.5”,但在场景中不会发生任何变化。好的,让我们做一个简单的lol。让我看看你使用的scaleMode,以及你如何创建游戏场景。我不认为这很复杂,我只想能够创建SKLabelNodes,让它们在所有iPhone上看起来都一样大?这并不复杂。这只是你如何存储你的宽度和高度。我不认为这有那么复杂,我只是想能够创建SKLabelNodes,让它们在所有iPhone上看起来都一样大?这并不复杂。这就是你如何储存你的宽度和高度。