进入某个页面强制横屏,其它是竖屏

项目中开启横竖屏

  • 自定义一个 UINavigationController ,并实现以上几个方法
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation  
{  
    UIViewController *vc =  self.topViewController;  
    if([vc isKindOfClass:[RemoteController class]]){//要横屏的界面  
        return (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);  
    }  
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait);  
}  
  
- (BOOL)shouldAutorotate  
  
{  
    UIViewController *vc =  self.topViewController;  
    if([vc isKindOfClass:[RemoteController class]]){//要横屏的界面  
        return YES;  
    }  
    //横屏的上一个界面,要返回为YES,否则横屏返回的时候上一界面不能还原成竖屏  
    if([vc isKindOfClass:[ConnectHome class]]){  
        return YES;  
    }  
    return NO;  
}  
  
- (NSUInteger)supportedInterfaceOrientations  
{  
    UIViewController *vc =  self.topViewController;  
    if([vc isKindOfClass:[RemoteController class]]){//要横屏的界面  
        return UIInterfaceOrientationMaskLandscapeRight;  
    }  
    return UIInterfaceOrientationMaskPortrait;  
}  
  • 在需要横屏的界面
//进入界面时强制横屏  
- (void)viewWillAppear:(BOOL)animated  
{  
    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];  
    }  
  
}  
//退出界面时强制竖屏  
- (void)viewWillDisappear:(BOOL)animated  
{  
      
    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 = UIDeviceOrientationPortrait;  
        [invocation setArgument:&val atIndex:2];  
        [invocation invoke];  
    }  
}  

推荐阅读更多精彩内容