swift - 将子视图添加到视图控制器时,SKScene 不会出现
问题描述
我试图向我的 GameViewController 添加一个子视图(因为我想在底部添加一个横幅广告)。我创建它如下:
if let view = self.view as! SKView? {
let subView = SKView(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 415, height: 685)))
view.addSubview(subView)
if let scene = SKScene(fileNamed: "GameScene") {
scene.scaleMode = SKSceneScaleMode.aspectFit
subView.presentScene(scene)
view.ignoresSiblingOrder = true
view.showsFPS = false
view.showsNodeCount = false
view.showsDrawCount = false
addBannerViewToView(bannerView)
}
}
这最初有效 - 它展示了我的 GameScene。但后来,我要求我的 GameScene 展示我创建的另一个 SKScene 子类,我称之为 Shop,使用以下代码:
func initializeShop() {
let shop = Shop(size: self.size)
let transition = SKTransition.fade(withDuration: 0.1)
self.view?.presentScene(shop!, transition: transition)
}
它根本不存在。它保留在当前视图中。
如果我不向 GameViewController 中的初始视图添加子视图,这完全可以正常工作,即
if let view = self.view as! SKView? {
if let scene = SKScene(fileNamed: "GameScene") {
scene.scaleMode = SKSceneScaleMode.aspectFit
view.presentScene(scene)
view.ignoresSiblingOrder = true
view.showsFPS = false
view.showsNodeCount = false
view.showsDrawCount = false
}
}
因此,似乎 GameViewController 的默认 SKView 的某些属性允许演示,但不允许子视图。但我找不到任何说明这一点的文档 - 据我所知,所有 SKViews 都应该能够呈现 SKScenes。
任何帮助将非常感激。
解决方案
推荐阅读
- asp.net-mvc - 切换到 {controller}/{id}/{action} 会中断 Redirec
- java - 使用 ForkChannel 时调用 MembershipListener#viewAccepted 时 RpcDispatcher#callRemoteMethods 不起作用
- jquery - 在提交按钮上显示一些相同的 div
- android - 如何修复 RTL 搜索栏中的“取消和左侧语音按钮”
- javascript - 找到一个表格行并显示。表中(可滚动的 div)
- java - 如何在 Java 中使用 JacksonJSONProvider ObjectMapper() 类?
- azure - 如何使用 Helm 将容器从 ACR 部署到 AKS
- swift - 是否有任何选项可以根据 uitableview 中的屏幕宽度快速在 Grid 中显示 imageview
- bash - Bash拆分并按同一文件中的两列排序
- java - DriverManager.getConnection("url"); cannot catch any exception