2

我正在将 Everyplay 与我的 Cocos2d 游戏集成。我的游戏仅支持横向方向。在 iPad 上一切顺利。但是当我在 iPhone(iOS6) 上测试时,当我调用“[[Everyplay sharedInstance] showEveryplay]”时,它会抛出如下异常:原因:'支持的方向与应用程序没有共同的方向,并且 shouldAutorotate 返回 YES'

我知道iOS6中的方向机制发生了变化。所以我添加了这个方法:

-(BOOL)shouldAutorotate{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape;
}
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
        return UIInterfaceOrientationMaskAllButUpsideDown;
}

然后“[[Everyplay sharedInstance] showEveryplay]”毫无例外地工作,但我的游戏也支持我不想要的纵向方向。

如果我只想在我的游戏中支持横向,但让“[[Everyplay sharedInstance] showEveryplay]”毫无例外地工作,我该怎么办?

4

2 回答 2

2

您有两种选择如何解决问题。

选项1:

将 UISupportedInterfaceOrientations 数组添加到游戏的 info.plist 中,其中包含 UIInterfaceOrientationPortrait、UIInterfaceOrientationLandscapeLeft、UIInterfaceOrientationLandscapeRight 和 UIInterfaceOrientationPortraitUpsideDown 项。通过从项目摘要页面检查所有支持的接口方向或手动编辑 info.plist 文件,您可以轻松地从 xCode 执行此操作。

选项 2:

将以下方法添加到应用程序的 AppDelegate.m 文件中:

// IOS 6

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
  return UIInterfaceOrientationMaskAll;
}

在这两种情况下,您还必须确保已将仅横向方向处理代码添加到游戏的主 UIViewController。

// IOS 5

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
  return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}

// IOS 6

- (BOOL)shouldAutorotate {
   return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
  return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
于 2013-08-13T06:06:10.573 回答
0

在 iPhone Everyplay webview 上始终处于纵向模式,但在 iPad 上,webview 两者都支持。录制与视频播放器一样支持这两种模式。我们可能会在不久的将来更新 iPhone 分辨率的横向模式,但在此任务完成之前需要重新设计。

于 2013-05-13T10:40:17.760 回答