2019年8月6日火曜日

iPhoneXs, XR で SpriteKit のシーンの表示を最適化する方法

概要

過去 に iPhoneX 時に SpriteKit のシーンを最適化する方法を紹介しました
iPhoneXs, XsMax, iPhoneXR を考慮した場合もっと良さそうな方法があったので紹介します

環境

  • macOS 10.14.5
  • Xcode 10.3

コード

if let view = self.view as! SKView? {
    // Load the SKScene from 'GameScene.sks'
    if let scene = TitleScene(fileNamed: Config.Scene.TitleScene) {
        // Set the scale mode to scale to fit the window
        scene.viewController = self
        if (UIDevice.current.model.range(of: "iPad") != nil) {
            scene.scaleMode = .fill
        } else {
            if (UIScreen.main.nativeBounds.height >= 1792.0) {
                // iPhoneXR 以上なら
                scene.scaleMode = .fill
            } else {
                scene.scaleMode = .aspectFill
            }
        }
        // Present the scene
        view.presentScene(scene)
    }
}

前回は height=2436.0 以上の場合に aspectFit を使っていました
2436.0 は iPhoneX なのですが XsMax の場合更に大きいので else に入ってしまいます
また iPhoneXR は 1792.0 になります

aspectFit にすれば上下に黒のバーが表示されてしまうことがわかったので aspectFit ではなく fill を使ったほうがキレイに表示されます
また iPhoneXR 以上のサイズの場合に fill にしたほうが良いので条件も変更しています

aspectFill を iPhoneXR や Xs で使うと一見キレイに表示されているように見えるのですが実は横幅がはみ出しているケースがあるので fill を使ったほうが良いです

0 件のコメント:

コメントを投稿