MPInlineVideoFullscreenViewController 和 AVFullScreenViewController 首次进入纵向模式

MPInlineVideoFullscreenViewController and AVFullScreenViewController first time comes in portrait mode

MPMovieplayer 中与横向问题相关的问题太多。我的应用程序是纵向的 mode.But 我想要横向的视频 mode.I 已经有 landscape/portrait 视频功能。我正在使用以下代码:

static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS7 = @"MPInlineVideoFullscreenViewController";
static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS8 = @"AVFullScreenViewController";

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
  if ([[window.rootViewController presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS7)] ||
    [[window.rootViewController presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS8)]) 
{

    return UIInterfaceOrientationMaskAllButUpsideDown;
}
else {
    return UIInterfaceOrientationMaskPortrait;
}

}

该代码在 iOS 7 和 iOS8 中都运行良好。 但问题是当设备处于横向时,视频首先以纵向模式打开 mode.After 方向的改变比应用程序工作正常。

提前致谢。

经过长时间的研发和不同的方法并花费 2-3 days.Finally 我在 friend.If 的帮助下得到了答案我们的视图控制器处于纵向模式,而不是以下代码能够在横向视图中推送播放器视图。

static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS7 = @"MPInlineVideoFullscreenViewController";
static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS8 = @"AVFullScreenViewController";

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
  if ([[window.rootViewController presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS7)] ||
[[window.rootViewController presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS8)]) 
{
  return UIInterfaceOrientationMaskAllButUpsideDown;
}
else {
return UIInterfaceOrientationMaskPortrait;

}

在我的例子中,问题是我的 UIWebView 容器视图控制器非常时间进入纵向 mode.I 不知道在 UINavigationController 中推送 ViewController 之后未调用的方向方法 ViewController.

-(BOOL)shouldAutorotate;  
-(NSUInteger)supportedInterfaceOrientations;

为了解决这个问题,我将在 ViewDidLoad 方法中添加以下代码

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];

并且在 viewWillDisappear 中的以下代码中

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];

上面的代码终于解决了我的问题。

感谢所有支持我解决这个问题的人。