当我将UIView向下转向SKView时,我得到了一个例外

时间:2015-10-14 02:39:54

标签: ios swift uiview casting sprite-kit

        UIView.animateWithDuration(2, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 6, options: [], animations: ({

        self.background.center.x = self.view.frame.width + 600
        self.PlayButton.center.x = self.view.frame.width + 600
        self.infoButton.center.x = self.view.frame.width + 600
        self.logo.center.x = self.view.frame.width + 600
        self.infoHidden.center.x = self.view.frame.width + 600
        self.settingsButton.center.x = self.view.frame.width + 600
        self.shareButton.center.x = self.view.frame.width + 600
        //self.adBanner.center.x = self.view.frame.width + 600
        self.view.frame.width + 800

    }), completion: nil)

    let View2 = self.view as! SKView        // View
    View2.ignoresSiblingOrder = false       // Perfomance
    let Play = GameScene()                  // Game
    Play.scaleMode = .ResizeFill            // Scale
    View2.presentScene(Play)                // Present

为什么这段代码会返回异常"无法转换类型' UIView' (0x1f1ed90)到' SKView'"?该代码工作得更早,突然间它开始抛出异常。我的视图类在故事板中设置为SKView。奇怪的是,当我将iad实施到我的游戏中时,这个异常才开始自我抛出。有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

我认为this thread会对你有帮助,特别是这句话

  

SKView是UIView的子类。 UIViewController的视图可以是任何视图   有点UIView对象,它没有特别是UIView   对象

     

请注意,如果视图不是,则此代码在运行时仍可能失败   SKView(例如,如果它实际上是一个UIView对象),所以你必须这样做   肯定的。

重点是,你正在进行的UIView可能不是一个SKView,而是一个UIView,所以你得到一个运行时异常。尝试使用可选的向下转换?并处理贬低失败的情况。