微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

确定 SwiftUI 视图中 SpriteKit SKScene 的实际高度

如何解决确定 SwiftUI 视图中 SpriteKit SKScene 的实际高度

我有一个 SwiftUI 视图,里面有 3 个 SpriteKit SKScenesvstack。 虽然 scoreView 和 accelerometerView 有固定的高度,但 gameScene 没有。 它占用剩余空间,并以某种方式取决于设备。

struct ContentView: View {

    @StateObject private var gameScene = GameSKScene()
    @StateObject private var scoreView = scoreSKScene()
    @StateObject private var accelerometerView = AccelerometerSKScene()

    var body: some View {
    
        vstack {
                SpriteView(scene: scoreView)
                    .frame(height: 50)
                            
                SpriteView(scene: gameScene)
          
                SpriteView(scene: accelerometerView)
                    .frame(height: 50)
    
        }.ignoresSafeArea()
    }
}

现在在 gameScene 中设置场景有问题,因为场景本身没有其大小的信息。

我可以用 UIScreen.main.bounds.width 获得宽度,但如何获得实际高度?

解决方法

如果我理解正确,您希望 gameScene SpriteView 在考虑其他两个场景后填充剩余空间。您可以使用 GeometryReader (documentation here)。

示例用法:

var body: some View {
    GeometryReader { geo in
       VStack {
          SpriteView(scene: scoreView)
              .frame(height: 50)
                            
          SpriteView(scene: gameScene)
              .frame(height: geo.size.height - 100)
          
          SpriteView(scene: accelerometerView)
              .frame(height: 50)
    
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。