解除iOS 9上的viewController时出现延迟

Ali*_*Hus 4 uiviewcontroller ios sprite-kit swift

这是我基于swift精灵套装游戏.它在iOS 8上运行良好,但在我开始在iOS 9设备上运行游戏后,我注意到了这种延迟.在我的游戏从菜单或其他一些视图返回到游戏场景之前,在其中一个视图中单击关闭按钮后会有一到两秒的延迟.

我用这段代码解雇了这些观点:

self.dismissViewControllerAnimated(true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我尝试在主调度队列中运行代码.它没有帮助.

dispatch_async(dispatch_get_main_queue()) {
     self.dismissViewControllerAnimated(true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

检查我的游戏视图中是否有任何可能导致延迟但看起来很好的方法.无论如何,代码在iOS 8中没有问题.

任何人都有类似的问题,也许修复它?

编辑:意识到游戏场景已经开始执行,当我的视图被解雇时,我可以看到动画已经在播放.例如,3秒动画已经在中途完成.

编辑2:这个问题不会发生在带有iPhone 4s的iOS 9上,而是发生在更高版本的版本中,在我的情况下使用iPhone 6.这可能是导致这种情况的新金属渲染.4s没有金属.新的iOS补丁也没有得到修复.

编辑3使用两个SKView时也会发生相同的延迟.为了摆脱UIControlView到SKView过渡延迟,我试图用另一个SKScene替换我的UIView,它的控件和UIControlView.即使我将转换时间设置为零秒,SKView被解除时也会出现延迟.这种时间滞后发生在两个方面,所以情况更糟.当前版本为iOS 9.2,Xcode 7.2.

uka*_*szm 9

这有点晚了,但也许它会帮助别人.我有类似的问题(SpriteKit中的游戏 - 在解除ViewView与SKView呈现的MenuViewController时出现延迟)以下是有帮助的:

当您呈现全屏ViewController(带菜单,设置等)时,将modalPresentationStyle设置为.OverFullScreen.

以下是发生了什么的简短信息(从Apple View Controller Programming Guide for iOS):

使用UIModalPresentationFullScreen样式呈现视图控制器时,UIKit通常会在过渡动画完成后删除基础视图控制器的视图.您可以通过指定UIModalPresentationOverFullScreen样式来阻止删除这些视图.当呈现的视图控制器具有允许底层内容显示的透明区域时,您可以使用该样式.

我认为这种延迟与恢复底层视图的过程有关,在SKView的场景中可能会很复杂