【问题标题】:Adjust text size to fit SKLabelNode with fixed width调整文本大小以适应具有固定宽度的 SKLabelNode
【发布时间】:2016-12-24 17:54:35
【问题描述】:

Spritekit 的新手并尝试修复 SKLabelNode 的宽度,然后相应地调整文本字体以适应节点。

一直在查看docs,但似乎找不到任何合适的东西,例如UILabel 函数:

UILabel.adjustsFontSizeToFitWidth = true

谢谢

【问题讨论】:

  • 你不会找到它:) SKLabelNode 上没有这样的东西。你能做的就是自己计算一切。
  • 无赖,听起来很痛苦
  • 更简单。我认为您可以使用上面链接中给出的内容。但我稍后会尝试为您编写一个示例。
  • 还有其他人认为是时候使用 SKLabelNode 的 NSAttributedString 版本了吗?
  • 还有一个高性能的多行标签节点会很好。 @dancingbush 抱歉,我还没有时间写答案,但通常我会根据标签的框架更新标签的 fontSize,同时考虑精灵(父)的框架。

标签: sprite-kit swift2 sklabelnode


【解决方案1】:

这是我不久前发现的一个不错的功能,但我不记得确切的位置

    func adjustLabelFontSizeToFitRect(labelNode:SKLabelNode, rect:CGRect) {

    // Determine the font scaling factor that should let the label text fit in the given rectangle.
    let scalingFactor = min(rect.width / labelNode.frame.width, rect.height / labelNode.frame.height)

    // Change the fontSize.
    labelNode.fontSize *= scalingFactor

    // Optionally move the SKLabelNode to the center of the rectangle.
    labelNode.position = CGPoint(x: rect.midX, y: rect.midY - labelNode.frame.height / 2.0)
}

这会调整标签的字体大小以完全适合宽度,但您可能需要更改功能以便在所有边上添加一些额外的填充。

【讨论】:

  • 非常感谢@Aidan,所以我将 SKLabelNode 和父 UITextview 尺寸作为 CGRect 传递?该计划是通过 UITextField 获取用户输入并在 SKLabelNode 边界内输入所述字符串
  • 对于阅读此书几乎没有文字经验的任何人 - 它只有效,因为只有一行文字。它也不能保证,因为字体缩放不是线性的。您可能需要将它放在一个循环中,并且我还会在框内包含至少几个像素的边距。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 2015-04-07
  • 1970-01-01
相关资源
最近更新 更多