UIWebView中视频播放屏幕自动旋转,app不支持旋转但是某一个页面需要旋转等
2014-09-17 17:22
423 查看
UIWebView视频屏幕旋转
在使用UIWebView播放视频的时候,想到视频应该能够旋转播放。但是app本身是不支持旋转的,所以把代码记录如下,引申出来的答案就是:所有的你想要进行页面自动旋转的页面都是可以用这种方法。不说太多的废话,代码如下:
首先在appDelegate中进行代理的设置,这个方法系统在屏幕旋转等的时候会自动调用,不用太多的担心调用时机:
//为视频的旋转做准备的
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if(_isFull)
return UIInterfaceOrientationMaskAll;
return UIInterfaceOrientationMaskPortrait;
}
上面的代码为:设置一个app的全局变量_isFull,在需要屏幕旋转的地方把全局变量进行改变并发送相应的通知(通知在下面),会自动调用上面的方法进行屏幕的旋转。
.h代码如下:
{
BOOL _isFull;
}
@property (nonatomic) BOOL isFull;
上面已经将需要的变换代码设置好了,下面要做的就是使用通知在需要旋转屏幕的时候系统自动调用上面的代码:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(vedioStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];// 播放器即将播放通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(vedioFinished:) name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];// 播放器即将退出通知
上面发送了两个通知,分别为:UIMoviePlayerControllerDidEnterFullscreenNotification,UIMoviePlayerControllerWillExitFullscreenNotification,我使用的是这两个方法,有的网上说使用UIMoviePlayerControllerDidExitFullscreenNotification这个通知,但是我使用之后发现不行,应该使用WillExit这个通知。通知之后的代码如下:
#pragma mark -
#pragma mark 调用视频的通知方法
- (void)vedioStarted:(NSNotification *)notification {// 播放器即将播放处理
ManFromTheStarsAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.isFull = YES;
}
- (void)vedioFinished:(NSNotification *)notification {// 视频
ManFromTheStarsAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.isFull = NO;
}
上面的方法执行完毕之后,会系统调用一开始在appDelegate里面写的方法,从而通过改变isFull的参数进行屏幕支持方向的改变。
上面已经完成了需要的操作。但是对于ios7开发的人员来说,很可能会遇到另一个问题,那就是状态栏,会在appDelegate中书写如下代码:
//对设备ios6/7进行状态栏的设置
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
// self.window.clipsToBounds = YES;
self.window.frame = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
}
这个时候由于UIWindow的高度进行了限制,是状态栏的20个像素,所以在屏幕翻转的时候会出现翻转过屏幕之后有20像素的黑色空间,而且严重影响app的美观和使用。所以我的解决办法就是:
#pragma mark -
#pragma mark 调用视频的通知方法
- (void)vedioStarted:(NSNotification *)notification {// 播放器即将播放处理
ManFromTheStarsAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.isFull = YES;
appDelegate.window.frame = CGRectMake(0, 0, KViewWidth, KViewHeight + 64 + 51);
appDelegate.window.bounds = CGRectMake(0, 0, KViewWidth, KViewHeight + 64 + 51);
}
- (void)vedioFinished:(NSNotification *)notification {// 视频
ManFromTheStarsAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.isFull = NO;
appDelegate.window.frame = CGRectMake(0, 20, KViewWidth, KViewHeight + 64 + 51);
appDelegate.window.bounds = CGRectMake(0, 20, KViewWidth, KViewHeight + 64 + 51);
}
具体的frame和bounds的大小这是我的app 的程序需要,大家可以设置成自己需要的大小,但是有一点,就是在进入全屏的时候,会把self.window.frame.origin.y设置成0,然后在修改成为20在推出全屏之后。
上面的方法适用于UIWebView播放视频的时候需求旋转屏幕的时候。但是在你需要旋转任何一个页面但是app本身不支持旋转的情况下,都是可以适当的改变上面的通知等参数,从而达到自己的目标。
以马内利。愿主可以帮我们尽快的解决我们的bug。
在使用UIWebView播放视频的时候,想到视频应该能够旋转播放。但是app本身是不支持旋转的,所以把代码记录如下,引申出来的答案就是:所有的你想要进行页面自动旋转的页面都是可以用这种方法。不说太多的废话,代码如下:
首先在appDelegate中进行代理的设置,这个方法系统在屏幕旋转等的时候会自动调用,不用太多的担心调用时机:
//为视频的旋转做准备的
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if(_isFull)
return UIInterfaceOrientationMaskAll;
return UIInterfaceOrientationMaskPortrait;
}
上面的代码为:设置一个app的全局变量_isFull,在需要屏幕旋转的地方把全局变量进行改变并发送相应的通知(通知在下面),会自动调用上面的方法进行屏幕的旋转。
.h代码如下:
{
BOOL _isFull;
}
@property (nonatomic) BOOL isFull;
上面已经将需要的变换代码设置好了,下面要做的就是使用通知在需要旋转屏幕的时候系统自动调用上面的代码:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(vedioStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];// 播放器即将播放通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(vedioFinished:) name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];// 播放器即将退出通知
上面发送了两个通知,分别为:UIMoviePlayerControllerDidEnterFullscreenNotification,UIMoviePlayerControllerWillExitFullscreenNotification,我使用的是这两个方法,有的网上说使用UIMoviePlayerControllerDidExitFullscreenNotification这个通知,但是我使用之后发现不行,应该使用WillExit这个通知。通知之后的代码如下:
#pragma mark -
#pragma mark 调用视频的通知方法
- (void)vedioStarted:(NSNotification *)notification {// 播放器即将播放处理
ManFromTheStarsAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.isFull = YES;
}
- (void)vedioFinished:(NSNotification *)notification {// 视频
ManFromTheStarsAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.isFull = NO;
}
上面的方法执行完毕之后,会系统调用一开始在appDelegate里面写的方法,从而通过改变isFull的参数进行屏幕支持方向的改变。
上面已经完成了需要的操作。但是对于ios7开发的人员来说,很可能会遇到另一个问题,那就是状态栏,会在appDelegate中书写如下代码:
//对设备ios6/7进行状态栏的设置
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
// self.window.clipsToBounds = YES;
self.window.frame = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
}
这个时候由于UIWindow的高度进行了限制,是状态栏的20个像素,所以在屏幕翻转的时候会出现翻转过屏幕之后有20像素的黑色空间,而且严重影响app的美观和使用。所以我的解决办法就是:
#pragma mark -
#pragma mark 调用视频的通知方法
- (void)vedioStarted:(NSNotification *)notification {// 播放器即将播放处理
ManFromTheStarsAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.isFull = YES;
appDelegate.window.frame = CGRectMake(0, 0, KViewWidth, KViewHeight + 64 + 51);
appDelegate.window.bounds = CGRectMake(0, 0, KViewWidth, KViewHeight + 64 + 51);
}
- (void)vedioFinished:(NSNotification *)notification {// 视频
ManFromTheStarsAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.isFull = NO;
appDelegate.window.frame = CGRectMake(0, 20, KViewWidth, KViewHeight + 64 + 51);
appDelegate.window.bounds = CGRectMake(0, 20, KViewWidth, KViewHeight + 64 + 51);
}
具体的frame和bounds的大小这是我的app 的程序需要,大家可以设置成自己需要的大小,但是有一点,就是在进入全屏的时候,会把self.window.frame.origin.y设置成0,然后在修改成为20在推出全屏之后。
上面的方法适用于UIWebView播放视频的时候需求旋转屏幕的时候。但是在你需要旋转任何一个页面但是app本身不支持旋转的情况下,都是可以适当的改变上面的通知等参数,从而达到自己的目标。
以马内利。愿主可以帮我们尽快的解决我们的bug。
相关文章推荐
- UIWebView中视频播放屏幕自动旋转,app不支持旋转但是某一个页面需要旋转等
- iOS UIWebView 全屏播放视频横屏 app其他页面不支持横屏
- iOS UIWebView 全屏播放视频, 需横屏,单app不支持横屏, 解决办法
- kindeditor本身支持上传flash功能,但是我们经常需要上传一些flv、mp4或则其它格式的视频。 其实具体的播放功能是通过jwplayer实现的。我只对kindeditor简单的修改了一下
- iOS UIWebView 全屏播放视频, 需横屏,单app不支持横屏, 解决办法
- app锁定屏幕方向,某一个界面支持屏幕旋转~
- 屏幕旋转--自动及手动控制(视频播放中setRequestedOrientation之后手机屏幕的旋转不触发onConfigurationChanged方法)
- 本来从动态壁纸预览页面设置一个动态壁纸回到桌面便可以看到桌面动态壁纸,可以观察得到自己的动态壁纸是否设置成功了(必须知道设置是否成功的结构,因为还有一些操作需要完成)! 但是现在是要在自己的应用中进入
- iOS屏幕旋转之为横屏视频播放增加竖屏模式
- UIWebView播放视频支持横竖屏问题
- 求一个页面浮动层的例子?要求当用户上下拉动IE滚动条的时候,层自动移动,但是开始时该层与浏览器顶端有距离,最后随着移动该层停留在顶端下面不动,当移动到最上面时恢复原来。
- IOS webView播放视频时进入页面自动播放的问题
- 所有界面锁定屏幕方向,某一个界面支持屏幕旋转~
- IOS Orientation, 想怎么转就怎么转~~~ 此博文主要针对IOS应用, 是屏幕旋转相关问题的一个总结. 主要内容有: IOS5,6,7不同版的适配. 强制旋转和自动旋转.
- OpenCV学习-第二章-视频播放控制-支持滚动条随着视频播放自动移动
- 问题解决:iOS6下UIWebView嵌vedio标签播放视频屏幕不旋转
- UINavigationController、UITabBarController 支持屏幕自动旋转问题
- iOS 的Viewcontroller只支持一个屏幕方向,弹出不同方向,旋转