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。