当我的整个应用程序处于纵向模式锁定时,以横向模式播放全屏视频

时间:2016-04-21 04:56:08

标签: ios objective-c landscape uiinterfaceorientation

我想以全屏模式在横向模式下播放视频。 我的应用程序锁定在纵向模式。 如何实现这一点。请帮我。 提前致谢

4 个答案:

答案 0 :(得分:9)

swift 3中最简单的解决方案 将此添加到您的应用代理:

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    if window == self.window {
        return .portrait
    } else {
        return .allButUpsideDown
    }
}

答案 1 :(得分:2)

我已经完成了我的应用程序。要做到这一点,你需要检查那是你想要播放视频的viewcontroller。

  • 您要做的第一件事是检查设备方向为纵向,横向左侧,横向位于项目目标中

  • 在您的AppDelegate中执行以下代码

    -(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
    
        UIStoryboard *mainStoryboard;
        if (IS_IPHONE) {
            mainStoryboard= [UIStoryboard storyboardWithName:@"Main" bundle: nil];
        }
        else{
           mainStoryboard= [UIStoryboard storyboardWithName:@"Main_iPad" bundle: nil];
        }
    
        ViewControllerThatPlaysVideo *currentViewController=    ViewControllerThatPlaysVideo*)[mainStoryboard     instantiateViewControllerWithIdentifier:@"postDetailView"];
        if(navigationController.visibleViewController isKindOfClass:    [ViewControllerThatPlaysVideo class]]){
           if([currentViewController playerState])
                return UIInterfaceOrientationMaskLandscape|UIInterfaceOrientationMaskPortrait;
           return UIInterfaceOrientationMaskPortrait;
        }
        return UIInterfaceOrientationMaskPortrait;
    }
    

答案 2 :(得分:1)

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

只需在呈现的视图控制器的- viewDidAppear:中调用它即可。

另一种方式:

首先,您必须了解,为了打开100多个景观中的一个视图,您的应用应该允许横向和纵向界面方向。默认情况下是这种情况,但您可以在目标设置,常规选项卡,部署信息部分中进行检查

然后,因为您允许整个应用程序使用横向和纵向,所以您必须告诉每个仅限纵向UIViewController它不应该自动旋转,添加此方法的实现: -

- (BOOL)shouldAutorotate {
    return NO;
}

最后,对于您的特定横向控制器,并且因为您说您以模态方式呈现它,您可以实现这些方法: -

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationLandscapeLeft; // or Right of course
}

-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

希望这会有所帮助:)

答案 3 :(得分:1)

在盯着这个页面差不多整整一天之后,我终于找到了一个节省工作时间的解决方案,

转到项目导航器,选择您的项目,在常规中,在设备方向中选择 potrait

另外,请确保您使用模态 segue来显示landscapeController。

现在将其添加到您想要横向模式的控制器中。

override func viewWillAppear(_ animated: Bool) {

    super.viewWillAppear(true)
}

override var shouldAutorotate: Bool {

    return false
}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {

    return .landscapeRight
}

override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {

    return .landscapeRight
}

这就是人们。