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)
完整示例