如何旋转 SpriteView?

How to rotate a SpriteView?

UPDATE: The SpriteView rotation will work in a simulator, but not on a real device (in my case an iPhone 11 with iOS 14b3). See @Asperi comment. ¯_(ツ)_/¯

SpriteView: A SwiftUI view that renders a SpriteKit scene.
好的

首先,快乐之路。下面的 Rectangle 会很好地旋转:

import SwiftUI

@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

struct ContentView: View {
    var body: some View {
        GeometryReader { geometry in

            // Rectangle test (rotates just fine)
            Rectangle()
                .fill(Color.red)
                .frame(width: geometry.size.width / 2, height: geometry.size.height / 2)
        }
    }
}

符合预期:

太棒了。
现在,当我尝试对 SpriteView:

做同样的事情时
import SwiftUI
import SpriteKit

@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

struct ContentView: View {
    var body: some View {
        GeometryReader { geometry in
            SpriteView(scene: createSKScene(with: geometry.size))
                .frame(width: geometry.size.width / 2, height: geometry.size.height / 2)
        }
    }

    func createSKScene(with size: CGSize) -> SKScene {
        let scene = SKScene()
        scene.backgroundColor = UIColor.blue
        scene.scaleMode = .resizeFill
        return scene
    }
}

视图不会旋转。

很明显我错过了什么。你知道我错过了什么吗?


现在有一件事很好奇...
通过添加这一行:let scene = SKScene()

...视图将停止旋转。

import SwiftUI
import SpriteKit

@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

struct ContentView: View {

    // By adding this line, views won't rotate anymore. ???
    let scene = SKScene()

    var body: some View {
        GeometryReader { geometry in

            // Now the rectangle will NOT rotate anymore.
            Rectangle()
                .fill(Color.red)
                .frame(width: geometry.size.width / 2, height: geometry.size.height / 2)
        }
    }
}

这让我抓狂!

Xcode:12.0 测试版 3
iOS: 14 测试版 3

已在 Xcode 12 beta 6 中修复。

¯\_(ツ)_/¯