乐视视频转屏问题
来源:互联网 发布:matlab高维数据可视化 编辑:程序博客网 时间:2024/05/01 09:04
现象:
4.0.5版本上,乐视的转屏没有问题,但4.2版本上,乐视转屏会导致整个屏幕布局混乱
原因:
我们代码的底层为UITabBarController写了一个超类UITabBarController+HDFUITabBarController.m
- (BOOL)shouldAutorotate {
return NO;
}
-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
return NO;
}
-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
这几句代码的效果是把整个app中所有的页面的转屏开关给关闭了,而乐视4.2demo正确转屏的执行前提是需要打开这些按钮的,所以,直接替换乐视4.2的转屏demo会出现导航栏布局全部混乱的问题
解决办法:
1、找到appDelegate中方法:
-(UIInterfaceOrientationMask)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
这个类会在每次手机转屏前触发,这个类返回的是一个mask码
返回哪个方向就表示app当前支持哪个方向的转屏,
2、设置一个常驻内存单例类:HDFInterfaceOrientationsManager,控制那些页面可以转屏,哪些页面不可以转屏,init方法默认不可转屏,
+ (instancetype) sharedManager {
static dispatch_once_t once;
static id instance;
dispatch_once(&once, ^{
instance = [self new];
});
return instance;
}
- (instancetype)init {
if ((self= [super init])) {
_supportAllOrientations = NO;
}
return self;
}
static dispatch_once_t once;
static id instance;
dispatch_once(&once, ^{
instance = [self new];
});
return instance;
}
- (instancetype)init {
if ((self= [super init])) {
_supportAllOrientations = NO;
}
return self;
}
3、appDelegate中设置如下,如果当前页面转屏开关没有打开,则默认返回UIInterfaceOrientationMaskPortrait,不支持转屏;如果当前页面转屏开关有打开,则检测当前:
-(UIInterfaceOrientationMask)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
{
if ([[HDFInterfaceOrientationsManagersharedManager]supportAllOrientations]) {
//这里是控制转屏状态下的弹窗展示方向,要和当前屏幕方向一致
if(window.windowLevel==UIWindowLevelAlert) {
if([application statusBarOrientation]==UIInterfaceOrientationPortrait) {
returnUIInterfaceOrientationMaskPortrait;
}
if ([application statusBarOrientation]==UIInterfaceOrientationLandscapeLeft) {
return UIInterfaceOrientationMaskLandscapeLeft;
}
if ([application statusBarOrientation]==UIInterfaceOrientationLandscapeRight) {
return UIInterfaceOrientationMaskLandscapeRight;
}
}
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else {
return UIInterfaceOrientationMaskPortrait;
}
}
if ([application statusBarOrientation]==UIInterfaceOrientationLandscapeLeft) {
return UIInterfaceOrientationMaskLandscapeLeft;
}
if ([application statusBarOrientation]==UIInterfaceOrientationLandscapeRight) {
return UIInterfaceOrientationMaskLandscapeRight;
}
}
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else {
return UIInterfaceOrientationMaskPortrait;
}
}
4、在需要支持转屏的页面
- 页面即将展示时 [HDFInterfaceOrientationsManagersharedManager].supportAllOrientations= YES;
- 页面即将消失时 [HDFInterfaceOrientationsManagersharedManager].supportAllOrientations= NO;
苹果文档上:
UITabBarController is rotatable if all of its view controllers are rotatable.
UITabBarController在他挂的控制器都可旋转的情况下,也是可旋转的。
0 0
- 乐视视频转屏问题
- 【转】opencv视频读取问题
- UIWebView播放视频支持横竖屏问题
- VLC播放RTSP视频延迟问题 (转)
- 视频播放的问题
- opencv 无法视频问题
- 音视频同步问题
- iphone视频播放问题
- 安卓视频问题
- ubuntu 视频播放问题
- IMSdroid视频马赛克问题
- 视频上传问题
- 视频通话问题总结
- 视频合并问题
- 音视频码流复用问题
- 视频抖动问题
- GPUImageMovieWriter录制视频问题
- html5视频问题
- Linux下gcc编译过程,静态链接库和动态链接库
- 银行
- java循环语句详解
- 【jzoj4878】【时空传送】【最短路】
- VirtualBox + CentOS7 安装PHP运行环境(一)
- 乐视视频转屏问题
- 淘宝一键搬家到微店
- 李航《统计学习方法》第六章——用Python实现逻辑斯谛回归(MNIST数据集)
- c++ stl---------set
- 带负数高精加
- 获取系统时间
- 指针学习笔记(上)
- 三星手机照相或选择图片,图片旋转截屏图片不旋转问题
- LightOJ 1220 Mysterious Bacteria(唯一分解定理+暴力)