【问题标题】:How to letterbox SpriteKit games for iPhone X?如何为 iPhone X 为 SpriteKit 游戏添加信箱?
【发布时间】:2017-11-28 01:11:35
【问题描述】:

我有一个在SpriteKit 开发的游戏。目前游戏在 iPhone X 上覆盖了整个屏幕。

我想给它加信箱,这样在纵向模式下,顶部和底部都有黑色空间,而在横向模式下,左右和底部都有黑色空间。基本上,我希望游戏包含在安全区域内。

实现此目标的推荐、最直接的方法是什么?

【问题讨论】:

  • 只要确保 SKView 被限制在安全区域内
  • 您不应该在 iPhone X 上为应用添加信箱,请参阅 HIG
  • @holex 是的,我知道,这只是设计更新之前的临时解决方案。
  • 在这种情况下,如果您的应用程序不以 iOS11 为目标,那么 iOS 会自动进行信箱处理。

标签: ios iphone sprite-kit


【解决方案1】:

我在我的ViewController 中覆盖了viewWillLayoutSubviews。这目前有效,但我不确定这是否是正确的方法。我们将不胜感激。

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()

    if #available(iOS 11.0, *) {
        if let window = view.window {
            view.frame = window.safeAreaLayoutGuide.layoutFrame
        }
    }
}

【讨论】:

    【解决方案2】:

    这里是使用 Obj-C 的老派

    SKView * skView = (SKView *)self.view;
    UIWindow *window = [self.view window];
    skView.frame = window.safeAreaLayoutGuide.layoutFrame; 
    SKScene * scene = [GameScene sceneWithSize:skView.frame.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      相关资源
      最近更新 更多