Есть ли способ установить кернинг на SKLabelNode для iOS 10 и новее? - PullRequest
1 голос
/ 31 мая 2019

Я бы хотел установить кернинг на 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 Ответ

1 голос
/ 31 мая 2019

Ответ - нет. Вам нужно будет придумать другой метод, такой как рендеринг с UILabel, извлечь из него UIImage, использовать UIImage на SKSpriteNode.

Конечно, самое простое решение - просто отказаться от поддержки iOS 10 (примерно 5% пользователей iOS работают на iOS 10)

...