概要
過去 に 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 件のコメント:
コメントを投稿