Swift SpriteView返回了错误的帧信息

Swift SpriteView返回了错误的帧信息,swift,swiftui,sprite-kit,Swift,Swiftui,Sprite Kit,我需要一些有关SpriteView的帮助,我第一次想使用它,但它破坏了我的旧代码,因为帧仅为零。但是你自己看看: 我有以下代码: struct ContentView: View { var body: some View { SpriteView(scene: SKScene(fileNamed: "MyScene")!) .frame(width: 300, height: 400).edgesIgnoringSaf

我需要一些有关
SpriteView
的帮助,我第一次想使用它,但它破坏了我的旧代码,因为
仅为零。但是你自己看看:

我有以下代码:

struct ContentView: View {
    var body: some View {
        SpriteView(scene: SKScene(fileNamed: "MyScene")!)
                .frame(width: 300, height: 400).edgesIgnoringSafeArea(.all)
    }
}
我的场景是:

然后是我的自定义类:

class MyScene: SKScene {
    override func didMove(to view: SKView) {
        print(frame)
    }
}
结果是: (-0.0,-0.0,0.0,0.0)

但并非如预期的那样: (-375.0,-667.0750.01334.0)


这里怎么了?如果我在
UIViewController
中通过“旧”方式使用相同的
场景
,效果很好。

我喜欢这个问题,可能与SwiftUI为配置屏幕大小而进行的转换有关,这不是最终解决方案,但您可以使用:

导入SpriteKit
类MyScene:SKScene{
覆盖func didMove(到视图:SKView){
打印(视图框)
}
重写func didChangeSize(uoldsize:CGSize){
打印(#功能)
印刷品(旧尺寸)
打印(自身大小)
}
}
把这个拿出来:

didChangeSize(_:)
(750.0, 1334.0)
(750.0, 1334.0)
...
didChangeSize(_:)
(750.0, 1334.0)
(0.0, 0.0)
didChangeSize(_:)
(750.0, 1334.0)
(0.0, 0.0)
(0.0, 0.0, 0.0, 0.0)
didChangeSize(_:)
(0.0, 0.0)
(300.0, 400.0)
didChangeSize(_:)
(0.0, 0.0)
(300.0, 400.0)

完整示例

我喜欢这个问题,可能与SwiftUI为配置屏幕大小而进行的转换有关,这不是最终解决方案,但您可以使用:

导入SpriteKit
类MyScene:SKScene{
覆盖func didMove(到视图:SKView){
打印(视图框)
}
重写func didChangeSize(uoldsize:CGSize){
打印(#功能)
印刷品(旧尺寸)
打印(自身大小)
}
}
把这个拿出来:

didChangeSize(_:)
(750.0, 1334.0)
(750.0, 1334.0)
...
didChangeSize(_:)
(750.0, 1334.0)
(0.0, 0.0)
didChangeSize(_:)
(750.0, 1334.0)
(0.0, 0.0)
(0.0, 0.0, 0.0, 0.0)
didChangeSize(_:)
(0.0, 0.0)
(300.0, 400.0)
didChangeSize(_:)
(0.0, 0.0)
(300.0, 400.0)
完整示例