【问题标题】:Determine actual height of a SpriteKit SKScene inside a SwiftUI View确定 SwiftUI 视图中 SpriteKit SKScene 的实际高度
【发布时间】:2021-07-17 01:33:07
【问题描述】:

我有一个 SwiftUI 视图,里面有一个包含 3 个 SpriteKit SKScene 的 VStack。 虽然 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 获得宽度,但如何获得实际高度?

【问题讨论】:

    标签: layout swiftui sprite-kit


    【解决方案1】:

    如果我理解正确,您希望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)
        
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2014-06-27
      相关资源
      最近更新 更多