公司的app是一个只支持竖屏(portrait).项目中图文直播模块有点播视频需求,项目中使用的是AVPlayerViewController.
问题是: 由于app支持竖屏,导致AVPlayerViewController 无法横屏播放.
方法1.
开启app横竖屏模式,然后在每个UIViewController里面添加方法,禁止原来的界面旋转
// 是否支持自动转屏
- (BOOL)shouldAutorotate {
return NO;
}
// 支持哪些屏幕方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
// 默认的屏幕方向(当前ViewController必须是通过模态出来的UIViewController(模态带导航的无效)方式展现出来的,才会调用这个方法)
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
工作量巨大,缺点很明显
方法二
经过查阅了相关资料stackflow地址
在appDelegate.m 文件中使用
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {}
, app会忽略plist文件中关于 orientation
的设置, 从而找到相关类进行设置,
具体操作如下
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
for (UIView *transitionView in window.subviews) {
if ([transitionView isKindOfClass:NSClassFromString(@"UITransitionView")]) {
for (UIView *subView in transitionView.subviews) {
id nextResponder = [subView nextResponder];
if ([nextResponder isKindOfClass:NSClassFromString(@"AVFullScreenViewController")]) {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
}
}
}
//避免导航栏隐藏导致bug
[[UIApplication sharedApplication] setStatusBarHidden:NO];
return UIInterfaceOrientationMaskPortrait;
}
网友评论