iOS 6:Youtube在浏览器中嵌入视频(MPAVController)可以在横向模式下锁定应用程序

时间:2012-10-09 19:34:04

标签: iphone youtube ios6 uiinterfaceorientation landscape-portrait

我在浏览器中嵌入了Youtube视频,这是所有肖像应用程序的一部分。当您启动YouTube视频时,它将在MPAVController中播放并允许在Landscape中旋转。这对我来说不是问题,但问题是如果视频是横向的,我按“OK”关闭视频;我返回浏览器但iPhone状态栏现在处于横向模式,在应用程序顶部留下一个空白区域,以及状态栏覆盖我的应用程序的右侧或左侧部分,具体取决于旋转方向。

我的包含UIWebView的视图控制器被纵向锁定:

- (BOOL) shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskPortrait;
}

请注意,使用6.0之前的SDK进行编译时,此问题不存在。

有类似问题的人有解决方案吗?

2 个答案:

答案 0 :(得分:5)

我面临同样的问题。以下是我如何解决它:

首先在包含UIWebView的ViewController上注册以接收ExitFullscreenNotification:

- (void)viewDidLoad {
    [super viewDidLoad];
    // For FullSCreen Exit
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(youTubeVideoExit:) 
                                                 name:@"UIMoviePlayerControllerDidExitFullscreenNotification"
                                               object:nil];
}

然后,在“退出全屏”处理程序中,强制纵向模式:

- (void)youTubeVideoExit:(id)sender {
  [[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationPortrait animated:NO];
}

当视频以横向模式结束时,用户会看到状态栏一瞬间更改其位置。这可能不是最好的解决方案,但至少可以解决问题。

希望它有所帮助!

答案 1 :(得分:0)

事实证明我的视图嵌入在UINavigationController中,所以我需要在那里处理我的旋转。

我创建了一个类别并将我的轮换代码放在那里

的UINavigationController + Autorotate.m

#import "UINavigationController+Autorotate.h"

@implementation UINavigationController (Autorotate)

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

@end

的UINavigationController + Autorotate.h

#import <UIKit/UIKit.h>

@interface UINavigationController (Autorotate)

- (NSUInteger)supportedInterfaceOrientations;

@end