iOS开发文集好东西小知识点

iOS强制横屏

2017-08-02  本文已影响12512人  十一岁的加重

朋友给的场景,一个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
上一篇 下一篇

猜你喜欢

热点阅读