有什么方法可以将iOS 10及更高版本的字距调整设置为SKLabelNode?

时间:2019-05-31 12:33:52

标签: swift sprite-kit

我想对SKLabelNode设置字距调整。我使用了NSAttributedString,此解决方案在iOS 11或更高版本上可以正常工作。

但是我也需要支持iOS 10。有什么方法可以设置支持iOS 10及更高版本的字距调整?

class Caption: SKLabelNode {

    static func addNode(at position: CGPoint, isBold: Bool, text: String) -> Caption {

        let font = isBold ? "Roboto-Bold" : "Roboto-Regular"

        let attr: [NSAttributedString.Key: Any] = [
            .font: UIFont(name: font, size: 16)!,
            .foregroundColor: SKColor.white,
            .kern: 2.0
        ]

        let caption = Caption(attributedText: NSAttributedString(string: text.uppercased(), attributes: attr))
        caption.horizontalAlignmentMode = .center
        caption.verticalAlignmentMode = .top
        caption.position = position   
        return caption
    }
}

Xcode说:'init(attributedText:)' is only available on iOS 11 or newer.

let caption = Caption(attributedText: NSAttributedString(string: text.uppercased(), attributes: attr))

1 个答案:

答案 0 :(得分:0)

答案是否定的。您将不得不想出另一种方法,例如使用UILabel进行渲染,从中提取UIImage,在SKSpriteNode上使用UIImage。

当然,最简单的解决方案是仅放弃对iOS 10的支持(大约5%的iOS用户在iOS 10上)