Ios 为什么SKView在一个高度消失,但在另一个高度出现?什么';SKView的最大高度是多少?

Ios 为什么SKView在一个高度消失,但在另一个高度出现?什么';SKView的最大高度是多少?,ios,uiview,sprite-kit,skscene,skview,Ios,Uiview,Sprite Kit,Skscene,Skview,下面的代码显示一个SKView,直到您将skHeight更改为2050或更高的值,如5000 1) 如何使SKView即使在2050或5000的高度也能显示 2) SKViews的最大尺寸是多少 复制: 1) 运行下面的代码。您将看到SKView显示为灰色窗口 2) 将skHeight更改为2050或5000。SKView不再显示 class TestViewController: UIViewController { override func viewDidLoad() {

下面的代码显示一个
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)
    }
}
类TestViewController:UIViewController{
重写func viewDidLoad(){
super.viewDidLoad()
//创建SKView
设skHeight=CGFloat(2050)
设skFrame=CGRect(x:0,y:0,宽度:100,高度:skHeight)
设skView=skView(帧:skFrame)
skView.backgroundColor=UIColor.red
//将测试视图添加到
view.addSubview(skView)
}
}

在许多设备上,OpenGL渲染不支持大于4096x4096的画布大小,您的视图是2050x2050,因此当您考虑视网膜模式时,它实际上变成4100x4100

现在@3x设备更疯狂了,因为它需要处理硬件的扩展和收缩,所以最终只能看到大约1501x1501的视图


Metal没有这个问题,而在iOS 12中,OpenGL已被弃用,因此希望模拟器也能使用Metal。(应该是因为莫哈韦只支持金属设备)

我无法复制您的问题。我总是有一个灰色的窗口在改变
skHeight
和10.000。使用Xcode 9.4.1和iPhone SE进行测试。它可能与特定设备有关吗?2048是您的限制,因为这是帧缓冲区的大小(实际上是4096,但它占@2x retina)。无论如何,您为什么希望您的视图如此大,因为没有任何设备的屏幕大于2048that@Knight0fDragon谢谢你的帮助!因为目标是将SKView嵌入到UIScrollView中。当场景和SKView小于2048时,滚动效果非常好,但当SKView高度大于2048时,滚动会中断,因为SKView(因此场景)不再显示。另外,一些用户喜欢第一个评论报告看到SKView的高度>2048。@AlessandroOrnano你能在模拟器上测试iPhone或iPad吗?谢谢你的帮助!金属具有纹理大小限制,具体取决于GPU。金属中当前的最大纹理大小为16384×16384。