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

Play video fullscreen in landscape mode, when my entire application is in lock in portrait mode

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

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;
}

希望这会有所帮助:)

我已经在我的应用程序中完成了这项工作。为此,您需要检查 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;
    }
    

swift3 中最简单的解决方案 将此添加到您的应用委托:

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

盯着这个页面看了将近一整天,我终于想出了一个节省工作时间的解决方案,

转到项目导航器,select 你的项目,一般来说 select 在设备方向上 potrait

还要确保您正在使用 modal 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
}

伙计们,就是这样。