前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS屏幕旋转处理

iOS屏幕旋转处理

作者头像
ppppy
发布2022-11-15 14:34:36
7000
发布2022-11-15 14:34:36
举报
文章被收录于专栏:ppppy_oschinappppy_oschina

要翻转的时候,首先响应的方法:

  • (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation return YES则支持翻转,NO则不支持。 紧接着

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 被调用。这个方法是发生在翻转开始之前。一般用来禁用某些控件或者停止某些正在进行的活动,比如停止视频播放。 再来是

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 这个方法发生在翻转的过程中,一般用来定制翻转后各个控件的位置、大小等。可以用另外两个方法来代替:willAnimateFirstHalfOfRotationToInterfaceOrientation:duration: 和 willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:

最后调用的是

  • (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 这个方法发生在整个翻转完成之后。一般用来重新启用某些控件或者继续翻转之前被暂停的活动,比如继续视频播放。

// 横屏处理

(void)fullBtnEvent:(UIButton *)btn {

__weak typeof(self) weakSelf = self;

[UIView animateWithDuration:0.5 animations:^{ if (weakSelf.isFullScreenPlay) { //设置状态栏为竖屏 UIInterfaceOrientation currentOrientation = [UIApplication sharedApplication].statusBarOrientation; if (currentOrientation != UIInterfaceOrientationPortrait) { [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO]; [self setNeedsStatusBarAppearanceUpdate]; }

代码语言:javascript
复制
      [UIApplication sharedApplication].keyWindow.windowLevel = UIWindowLevelNormal;
      [UIApplication sharedApplication].statusBarHidden = NO;
      weakSelf.playerView.transform = CGAffineTransformRotate(weakSelf.playerView.transform, -M_PI/2);
      weakSelf.playerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, VIDEOHEIGHT);
      weakSelf.playerView.isFullScreenStatus = NO;
      [weakSelf.view addSubview: weakSelf.playerView];
      weakSelf.isFullScreenPlay = NO;
      [weakSelf.view bringSubviewToFront:weakSelf.backBtn];

  }else {
      // 全屏
      weakSelf.playerView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, M_PI/2);
      weakSelf.playerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
      weakSelf.playerView.isFullScreenStatus = YES;
      [UIApplication sharedApplication].statusBarHidden = YES;
      [UIApplication sharedApplication].keyWindow.windowLevel = UIWindowLevelAlert;
      [[UIApplication sharedApplication].keyWindow addSubview:weakSelf.playerView];
      weakSelf.isFullScreenPlay = YES;

      //设置状态栏为横屏
      UIInterfaceOrientation currentOrientation = [UIApplication sharedApplication].statusBarOrientation;
      if (currentOrientation != UIInterfaceOrientationLandscapeRight) {
          [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];
          [self setNeedsStatusBarAppearanceUpdate];
      }
  }

}]; }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云点播
面向音视频、图片等媒体,提供制作上传、存储、转码、媒体处理、媒体 AI、加速分发播放、版权保护等一体化的高品质媒体服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档