关于视频播放
来源:互联网 发布:tcp和udp端口号区别 编辑:程序博客网 时间:2024/05/20 23:58
视频退出后台后再次进到前台视频暂停
需要监听这两个通知,然后对视频播放做相应处理
// app退到后台
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidEnterBackground) name:UIApplicationWillResignActiveNotification object:nil];// app进入前台
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidEnterPlayground) name:UIApplicationDidBecomeActiveNotification object:nil];
旋转屏幕改变视频的View
监听方法:
- // 监测设备方向
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onDeviceOrientationChange)
name:UIDeviceOrientationDidChangeNotification
object:nil];
实现:
#pragma mark - 屏幕方向发生变化会调用这里- (void)onDeviceOrientationChange { UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; UIInterfaceOrientation interfaceOrientation = (UIInterfaceOrientation)orientation; if (orientation == UIDeviceOrientationFaceUp || orientation == UIDeviceOrientationFaceDown || orientation == UIDeviceOrientationUnknown ) { return; } switch (interfaceOrientation) { case UIInterfaceOrientationPortrait:{ [self verticalScreen]; } break; case UIInterfaceOrientationLandscapeLeft:{ [self crossScreen:UIInterfaceOrientationLandscapeLeft]; } break; case UIInterfaceOrientationLandscapeRight:{ [self crossScreen:UIInterfaceOrientationLandscapeRight]; } break; default: break; }}#pragma mark - 横屏- (void)crossScreen:(UIInterfaceOrientation)orien{ // 隐藏导航栏 [self.viewController.navigationController setNavigationBarHidden:YES animated:NO]; // 获取到当前状态条的方向 UIInterfaceOrientation currentOrientation = [UIApplication sharedApplication].statusBarOrientation; // 判断如果当前方向和要旋转的方向一致,那么不做任何操作 if (currentOrientation == orien) { return; } UIWindow *win = [[UIApplication sharedApplication] windows].lastObject; // 根据要旋转的方向,使用Masonry重新修改限制 if (orien != UIInterfaceOrientationPortrait) {// // 这个地方加判断是为了从全屏的一侧,直接到全屏的另一侧不用修改限制,否则会出错; if (currentOrientation == UIInterfaceOrientationPortrait) { self.frame = CGRectMake(0, 0, win.bounds.size.height, win.bounds.size.width-20); [win addSubview:self]; } } if (orien == UIInterfaceOrientationLandscapeLeft){ self.center = CGPointMake(win.center.x+10, win.center.y); }else{ self.center = CGPointMake(win.center.x-10, win.center.y); } [[UIApplication sharedApplication] setStatusBarOrientation:orien animated:NO]; _flag = false; // 旋转 [self rotateView]; [self setSubViewsFrame]; // 改变位置}#pragma mark - 旋转view- (void)rotateView{ // 获取旋转状态条需要的时间: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; // 更改了状态条的方向,但是设备方向UIInterfaceOrientation还是正方向的,这就要设置给你播放视频的视图的方向设置旋转 // 给你的播放视频的view视图设置旋转 self.transform = CGAffineTransformIdentity; self.transform = [self getTransformRotationAngle]; // 开始旋转 [UIView commitAnimations];}#pragma mark - 设置控件大小- (void)setSubViewsFrame{ width = self.bounds.size.width; height= self.bounds.size.height; self.playBtn.frame = CGRectMake(10, height-bottomHeight, 20, 20); self.startLab.frame = CGRectMake(CGRectGetMaxX(self.playBtn.frame)+10, height-bottomHeight, 40, 20); self.bigBtn.frame = CGRectMake(ScreenWidth-30, height-bottomHeight, 20, 20); self.totalLab.frame = CGRectMake(CGRectGetMinX(self.bigBtn.frame)-50, height-bottomHeight, 40, 20); self.slider.frame = CGRectMake(CGRectGetMaxX(self.startLab.frame)+5,height-bottomHeight,ScreenWidth-CGRectGetWidth(self.playBtn.frame)-CGRectGetWidth(self.bigBtn.frame)-CGRectGetWidth(self.bigBtn.frame)-CGRectGetWidth(self.startLab.frame)-70,20); self.playLayer.frame = CGRectMake(0, 0, width, height); self.indicatorView.center = CGPointMake(CGRectGetWidth(self.bounds) / 2, CGRectGetHeight(self.bounds) / 2); [self addSubview:self.indicatorView];}#pragma mark - 获取变换的旋转角度- (CGAffineTransform)getTransformRotationAngle { // 状态条的方向已经设置过,所以这个就是你想要旋转的方向 UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; // 根据要进行旋转的方向来计算旋转的角度 if (orientation == UIInterfaceOrientationPortrait) { return CGAffineTransformIdentity; } else if (orientation == UIInterfaceOrientationLandscapeLeft){ return CGAffineTransformMakeRotation(-M_PI_2); } else if(orientation == UIInterfaceOrientationLandscapeRight){ return CGAffineTransformMakeRotation(M_PI_2); } return CGAffineTransformIdentity;}
Demo请点击
阅读全文
0 0
- 关于Web视频播放
- 关于视频播放器
- 关于视频播放
- 关于音视频播放
- 关于视频播放
- 关于视频播放性能测试
- 关于视频播放性能测试
- 关于视频播放性能测试
- 关于视频播放性能测试
- 关于视频播放性能测试
- 关于SilverLight视频播放器
- 关于视频播放的学习
- 关于使用VideoView播放视频
- 关于VideoView播放视频问题
- 请教关于视频播放的问题
- html关于音乐和视频播放整理
- 关于MPMoviePlayerController以及MPMoviePlayerViewControlle流媒体视频播放
- 关于视频播放的问题呢
- 反射
- If($i==true)和If(true==$i)区别
- python简单示例
- 自定义view实现一个游标效果(增强)
- JVM线上问题排查
- 关于视频播放
- 存储过程中处理用逗号拼接成的参数
- 深度学习在目标检测中的应用及其tensorflowAPI实践(一)
- 如何使用PDF转换器将PDF转换成图片
- linux nfs 命令
- java中的抽象类和接口
- web 服务器打开gzip压缩
- E
- js数值