iOS屏幕旋转处理

2022-11-15 14:34:36 浏览数 (2)

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

  • (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];
      }
  }

}]; }

0 人点赞