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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpriteKit:为什么SKView在一个高度消失但出现在另一个高度? SKView的最大高度是多少?相关的知识,希望对你有一定的参考价值。

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

1)你怎么能使SKView出现在2050或5000的高度?

2)SKViews的最大尺寸是多少?

重现:

1)运行以下代码。您将看到SKView表示为灰色窗口。

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渲染不支持大于4096x4096的画布大小,您的视图为2050x2050,因此当您考虑视网膜模式时,它实际上变为4100x4100。

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

Metal没有这个问题,从ios 12开始,OpenGL已被弃用,所以希望模拟器也能使用Metal。 (因为Mojave只支持金属设备)

以上是关于SpriteKit:为什么SKView在一个高度消失但出现在另一个高度? SKView的最大高度是多少?的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发 问一个spritekit问题

带有 Skview 的 ViewController - SpriteKit SKScene

SpriteKit 暂停和恢复 SKView

SpriteKit - SKScene 边界不等于 SKView 边界

Swift 3:通过覆盖 SKView 在 SpriteKit 中制作暂停菜单?

在 SpriteKit 中不工作的过渡