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<UITouch *> *)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

效果展示

aaa.gif
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容