首页 > 解决方案 > 将子视图添加到视图控制器时,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。

任何帮助将非常感激。

标签: swiftxcodeuiviewsprite-kitskscene

解决方案


推荐阅读