创建一个 Scales 以适合 SKView 的 SKScene

SKScene 有一个 scaleMode 参数,该参数定义了如果它的大小和/或形状不同,它将如何改变其大小以适应 SKView 中呈现的 SKView。

scaleMode 有四个选项:

  • AspectFit :场景缩放(但未拉伸),直到它适合视图。这可确保场景不会失真,但如果场景与视图的形状不同,则可能会有一些场景未覆盖的区域。
  • AspectFill :场景缩放(但未拉伸)以完全填充视图。这样可确保场景不会失真并且视图已完全填满,但如果场景与视图的形状不同,则可能会裁剪场景的某些部分。
  • 填充 :缩放场景(如果需要拉伸)以完全填充视图。这样可以确保视图完全填充,并且没有任何场景被裁剪,但如果场景与视图的形状不同,场景将会失真。
  • ResizeFill :场景根本不缩放,而是改变其大小以适合视图的大小。

以下代码假定已经存在名为 skView 的 SKView(例如,使用 Interface Builder 创建全屏 SKView 中定义 ),并且已定义了名为 GameView 的 SKScene 子类,然后使用 AspectFill scaleMode:

在 Swift 3 中

    let sceneSize = CGSize(width:1000, height:1000)
    let scene = GameScene(size: sceneSize)
    scene.scaleMode = .aspectFill

    skView.presentScene(scene)