我使用以下代码关闭视图:
self.dismissViewControllerAnimated(true, completion: nil)
为了解决这个问题,我尝试将代码运行在主调度队列中,但并没有起到帮助作用。
dispatch_async(dispatch_get_main_queue()) {
self.dismissViewControllerAnimated(true, completion: nil)
}
检查了游戏视图加载的方法是否有可能导致延迟,但看起来没有问题。至少在iOS 8中,代码没有问题。
有人遇到过类似的问题,然后解决了吗?
编辑:意识到游戏场景已经开始执行,而当我的视图被取消时,我可以看到动画已经在播放了。例如,一个3秒的动画已经完成了一半。
编辑2:这个问题在使用iPhone 4s的iOS 9上不会发生,但在后来的版本(如iPhone 6)中会发生。这可能是由于新的Metal渲染引起的。4s没有Metal。最新的iOS补丁也没有解决这个问题。
编辑3:使用两个SKViews时也会出现同样的滞后。为了消除UIControlView到SKView转换的延迟,我试图用另一个SKScene替换我的UIView、它的控件和UIControlView。即使我将转换时间设置为零秒,当SKView被取消时还是会有延迟。这次滞后发生在两个方向上,所以更糟糕。当前版本iOS 9.2,Xcode 7.2。