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 只支持金属设备)
下面的代码显示 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 只支持金属设备)