SpriteKit:为什么SKView在一个高度消失而在另一个高度出现? SKView 的最大高度是多少?

SpriteKit: why does SKView disappear at one height but appears at another height? What's the maximum height for SKView?

下面的代码显示 SKView,直到您将 skHeight 更改为 2050 或更高的值,如 5000。

1) 如何让 SKView 出现在 2050 或 5000 的高度?

2) SKViews 的最大大小是多少?

重现:

1) 运行 下面的代码。您会看到 SKView 表示为灰色 window。

2) 将 skHeight 更改为 2050 或 5000。SKView 不再出现。

class TestViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        // Create SKView
        let skHeight = CGFloat(2050)
        let skFrame = CGRect(x: 0, y: 0, width: 100, height: skHeight)
        let skView = SKView(frame: skFrame)
        skView.backgroundColor = UIColor.red

        // Add test view to <scrollView>
        view.addSubview(skView)
    }
}

OpenGL 渲染在许多设备上不支持 canvas 大于 4096x4096 的尺寸,您的视图是 2050x2050,所以当您考虑视网膜模式时,它实际上变成了 4100x4100。

现在 @3x 设备更疯狂,因为它需要处理硬件缩放,所以你最终只能获得大约 1501x1501 的视图。

Metal 没有这个问题,并且从 iOS 12 开始,OpenGL 已被弃用,因此希望模拟器也能使用 Metal。 (应该是因为 Mojave 只支持金属设备)