美文网首页专注iOS开发(OC/Swift)ios专题
iOS-webView加载视屏横向全屏播放(video)

iOS-webView加载视屏横向全屏播放(video)

作者: 洲洲哥 | 来源:发表于2016-10-31 14:46 被阅读422次

本文首发地址
项目搞到这个时候,就有点费劲了。
只要你看了洲洲哥的这个文章就木事的啦。

demo地址:https://github.com/7General/shouldAutorotate

情况描述 iOS中vc里放了一个webview这个webview里加载一个连接h5。这个h5中有一个video和一些其他的标签。当让这里的video标签才是重要的。

要求:在点击视屏播放的时候,改视屏要横着全屏播放。当点击完成或者缩小屏幕的时候的就要回到出事位置了。

1:先来看看h5的代码

 <video id="myVideo" width="100%" height="400px" 
poster="/ItaxerGS/ENTYPATH/files/enty/EF20161028548728693668.png" 
src="http://ysyc-winys.chinacloudapp.cn:7001/ItaxerGS/ENTYPATH/files/enty/EF20161028548448333271.mp4" controls autobuffer >
</video>

这里看当然要看主要的代码了。

看着没问题吧??
错!!!!
问题来了。这里播放是可以全屏播放,但是是竖着播放的。不和要求啊。。。。

2:分析一下原因白
首先一点击播放就全屏播放,但是是竖着的,似乎不是那么好。要是把当前的window横着显示尼,就可以完成要求。

在看代码之前,先所一下两个重要的通知,
1:UIWindowDidResignKeyNotification 进入全屏
2:UIWindowDidBecomeHiddenNotification 退出全屏
对,这两个很重要!!!!
看看oc代码

首先要在你想要翻转的页面上添加上添加如下代码
当然在viewWillAppear还是在viewDidLoad列为看官就凭自己的想法了。

-(void)RegeistNoticeCenter {
    //将要进入全屏
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startFullScreen) name:UIWindowDidResignKeyNotification object:nil];
    //退出全屏
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(endFullScreen) name:UIWindowDidBecomeHiddenNotification object:nil];
}

两个实现方法
/*进入全屏/

-(void)startFullScreen {
    NSLog(@"进入全屏");
    UIApplication *application=[UIApplication sharedApplication];
    [application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight];
    application.keyWindow.transform=CGAffineTransformMakeRotation(M_PI/2);
    CGRect frame = [UIScreen mainScreen].applicationFrame;
    application.keyWindow.bounds = CGRectMake(0, 0, frame.size.height + 20, frame.size.width);
}

/*退出全屏/

-(void)endFullScreen {
    NSLog(@"退出全屏XXXX");
    UIApplication *application=[UIApplication sharedApplication];
    [application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight];
    CGRect frame = [UIScreen mainScreen].applicationFrame;
    application.keyWindow.bounds = CGRectMake(0, 0, frame.size.width, frame.size.height + 20);
    [UIView animateWithDuration:0.25 animations:^{
        application.keyWindow.transform=CGAffineTransformMakeRotation(M_PI * 2);
    }];
}

这里注意,我在进入全屏的时候给宽度加了20。在退出全屏的时候,宽度同样加了20。

各位看官留意

在进入全屏的时候宽度加20是为了解决在全屏播放视频时两边的留白问题。
在退出全屏播放视频就是让当前的widow和之前的一样咯

在iOS8.4和8.1亲测试木问题的
当让你要是和《iOS-重力感应》就更完美了
一摇动手机 就可以横着全屏播放咯。。。

如有问题可添加我的QQ:1290925041
还可添加QQ群:234812704(洲洲哥学院)
欢迎各位一块学习,提高逼格!
也可以添加洲洲哥的微信公众号

更多消息

更多信iOS开发信息 请以关注洲洲哥 的微信公众号,不定期有干货推送:

这里写图片描述

相关文章

网友评论

  • 不必luo嗦:你好,我这边进入全屏没问题,但是退出全屏屏幕有很大一块黑色的区域
  • 简书弧线:点赞!解决了困扰我很久的问题
    洲洲哥:@简书弧线 谢谢哈,还可以添加我的微信公众号“洲洲哥”,一块学习哈

本文标题:iOS-webView加载视屏横向全屏播放(video)

本文链接:https://www.haomeiwen.com/subject/pslputtx.html