第一个:
- // 状态栏动画持续时间
- CGFloat duration = [UIApplication sharedApplication].statusBarOrientationAnimationDuration;
- [UIView animateWithDuration:duration animations:^{
- // 修改状态栏的方向及view的方向进而强制旋转屏幕
- [[UIApplication sharedApplication] setStatusBarOrientation:_bottomView.landscapeModel ? UIInterfaceOrientationLandscapeRight : UIInterfaceOrientationPortrait];
- self.navigationController.view.transform = _bottomView.landscapeModel ? CGAffineTransformMakeRotation(M_PI_2) : CGAffineTransformIdentity;
- self.navigationController.view.bounds = CGRectMake(self.navigationController.view.bounds.origin.x, self.navigationController.view.bounds.origin.y, self.view.frame.size.height, self.view.frame.size.width);
- }];
第二个:
非arc:
- if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
- [[UIDevice currentDevice] performSelector:@selector(setOrientation:)
- withObject:(id)UIInterfaceOrientationLandscapeRight];
- }
arc下:
- if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
- SEL selector = NSSelectorFromString(@"setOrientation:");
- NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
- [invocation setSelector:selector];
- [invocation setTarget:[UIDevice currentDevice]];
- int val = UIInterfaceOrientationLandscapeRight;
- [invocation setArgument:&val atIndex:2];
- [invocation invoke];
- }