iOS强制横屏

朋友给的场景,一个vc present一个nav包着一个vc,这个被present出来的vc要求横屏,dismiss里要竖屏,原代码关键部分

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
    return self.window.rootViewController.supportedInterfaceOrientations;
}
@implementation ViewController

- (IBAction)btnClick:(UIButton *)sender {
    ddddViewController *vc = [ddddViewController new];

    UINavigationController *nav = [[UINavigationController   alloc] initWithRootViewController:vc];
    [self presentViewController:nav animated:YES completion:nil];
}


@end


@implementation ddddViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.title = @"横屏";
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];
    [self dismissViewControllerAnimated:YES completion:nil];
}
#pragma mark - 屏幕旋转
- (BOOL)shouldAutorotate{
    return YES;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return UIInterfaceOrientationLandscapeRight;
}

@end

我的修改加入自定义nav


@implementation Nav

- (BOOL)shouldAutorotate {
    return self.topViewController.shouldAutorotate;
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return self.topViewController.supportedInterfaceOrientations;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return self.topViewController.preferredInterfaceOrientationForPresentation;
}

@end

效果展示

iOS强制横屏_第1张图片
aaa.gif

你可能感兴趣的:(iOS强制横屏)