1

我有一个 UIViewcontroller 推送第二个 UIViewcontroller。第二个 UIViewcontroller 有一个 UIWebview:一些文本和一些来自 youtube url(嵌入)的视频。当我点击播放器正在打开的视频时,屏幕仍处于纵向模式,而不是旋转到横向。

视频在 ios5 上使用以下功能正常工作:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieIsPlaying:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];

- (void)movieIsPlaying:(NSNotification *)notification
{

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeLeft animated:NO];
}

该问题仅发生在 ios6 上。

知道如何解决这个问题吗?

4

1 回答 1

1

这是来自 Apple 的 iOS SDK XCode4.5+ 的引用(请参阅UIViewController类参考,处理视图旋转):

在 iOS 6 中,您的应用支持在应用的 Info.plist 文件中定义的界面方向。视图控制器可以覆盖supportedInterfaceOrientations 方法来限制支持的方向列表。一般情况下,系统只会在窗口的根视图控制器或呈现为填满整个屏幕的视图控制器上调用该方法;子视图控制器使用其父视图控制器为它们提供的窗口部分,并且不再直接参与有关支持哪些旋转的决策。

同样在 iOS6 中,类shouldAutorotateToInterfaceOrientation:方法UIViewController已被弃用。

因此,在您的根视图控制器中,您执行 ff:

- (BOOL)shouldAutorotate {
  return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
  return UIInterfaceOrientationMaskPortrait;
}

顺便说一句,“根视图控制器”是UIViewController您设置为 appDelegate 窗口对象的 rootViewController 的任何子类。您通常在 appDelegate 的application:didFinishLaunchingWithOptions:方法中执行此操作。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  // Override point for customization after application launch.
  self.window.rootViewController = [FFDashboardController create];
  [self.window makeKeyAndVisible];
  return YES;
}

还要检查这个答案

于 2012-12-14T12:19:17.643 回答