我们有一个代码库是在2013年编写和发布的,但在iOS 9中,当SKScene
消息发送到presentScene:transition:
消息时,应用程序不再在SKView
之间明显转换。 SKScene
收到didMoveToView:
消息,但场景本身从未在屏幕上显示。
以下是我们的尝试:
Metal
Info.plist
[SKTransition transitionWithCIFilter:duration:]
代替预定义的动画zPosition
UIView
动画(这使我们的SKNode
消失了)pausesOutgoingScene
YES
至SKTransition
上述尝试都没有解决问题。 请注意,所有内容都在iOS 8中正常转换
以下是一些不起作用的示例代码:
-(BOOL)presentTitle {
if (!titleSceneLoaded) {
return NO;
}
[skView presentScene:titleScene transition:[SKTransition fadeWithDuration:1.0]];
return YES;
}
将其更改为此可使其再次起作用(无过渡):
-(BOOL)presentTitle {
if (!titleSceneLoaded) {
return NO;
}
[skView presentScene:titleScene];
return YES;
}
有关如何定位/修复/解决错误的任何建议?
答案 0 :(得分:2)
iOS9中存在一个错误,在子视图中显示一个转换场景。
我遇到了同样的问题,在我的控制器中,我可以通过更改viewWillLayoutSubviews中的以下代码来解决此问题:
[self.subview presentScene:self.scene];
[self.view addSubview:self.subview];
到此:
[((SKView *)self.view) presentScene:self.scene];
如果场景必须保持在子视图方法中,另一种解决方法是使用presentScene而不进行转换,这确实有效。
答案 1 :(得分:1)
我们无法让SKTransition
工作。我们与在开发人员论坛上发布的开发人员支持团队进行了交谈,并尝试了在此发布的所有内容。
这是iOS 9独有的SpriteKit错误。如果其他人在iOS 9上遇到此错误,我们会使用UIView animateWithDuration:animations:completion:
切换到自定义转换。