要翻转的时候,首先响应的方法:
- (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];
}
}
}]; }