Я пытаюсь написать код, который процедурно создает растровые шрифты, и для этого я создал SKTexture, а затем преобразовал их в cgImage / UIImage (потому что это необходимо для инициализации SKTextureAtlas). Однако cgImage, похоже, не работает надежно на симуляторе, тогда как на устройстве. Следующий код иллюстрирует эту точку, если вы поместите ее в SKScene:
let chars = "ABCDEFGHIJKLMNOP"
var y: CGFloat = 0
for each in chars {
let letter = String(each)
let label = SKLabelNode(text: letter)
let view = SKView()
let texture = view.texture(from: label)!
let cgImage = texture.cgImage() // HERE IS WHERE IT GOES WRONG!
let tex2 = SKTexture(cgImage: cgImage) // OR POSSIBLY HERE!
let sprite = SKSpriteNode(texture: tex2)
sprite.position.x = 100
sprite.position.y = y
addChild(sprite)
y += 30
}
В симуляторе некоторые символы не отображаются (и, как ни странно, это точно те же самые), тогда как на устройстве они все в порядке. Он определенно преобразует его в cgImage, а затем обратно в SKTexture, что создает проблему, если вы удалите этот код, он работает нормально, но я также получаю ту же проблему, если конвертирую cgImage в UIImage, поэтому я думаю, что это должен быть cgImage, у которого есть проблема . И такое разное поведение на симуляторе и на устройстве должно ли я думать, что это ошибка? Но я искал и не нашел никого, у кого были бы такие же проблемы. Если кто-нибудь знает, что идет не так или у него есть обходной путь, я был бы очень признателен.