我想以全屏模式在横向模式下播放视频。 我的应用程序锁定在纵向模式。 如何实现这一点。请帮我。 提前致谢
答案 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
}
这就是人们。