您的位置:首页 > 移动开发 > IOS开发

iOS指定页面旋转

2016-01-13 16:02 447 查看
今天下午遇到一个需求,在原有只支持竖屏的应用上需要一个页面支持横屏。琢磨了一会,最后是这样解决的:

1. 在general页面勾选支持横屏的两个选项,并勾选requires full screen选项,让应用支持横屏显示。

2. 自定义一个导航控制器CustomerViewController:UINavigationController,实现如下方法:

- (BOOL)shouldAutorotate

{

    return YES;

}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations

{

    if ([self.topViewController isKindOfClass:[DetailQuotaController class]])

    {

        return UIInterfaceOrientationMaskAllButUpsideDown;

    }

    return UIInterfaceOrientationMaskPortrait;

}

3. 在根视图控制器中,添加如下方法:

- (BOOL)shouldAutorotate

{

    UIViewController * navVC = self.selectedViewController;

    if ([navVC isKindOfClass:[CustomerViewController class]])

    {

        return YES;

    }

    return NO;

}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations

{

    UIViewController * vc = self.selectedViewController;

    if (vc)

    {

        return [vc supportedInterfaceOrientations];

    }

    return UIInterfaceOrientationMaskPortrait;

}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

{

    UIViewController * vc = self.selectedViewController;

    if (vc)

    {

        return [vc preferredInterfaceOrientationForPresentation];

    }

    return UIInterfaceOrientationPortrait;

}

这样就可以实现了。

但是这样从横屏界面pop到上一个界面是存在一点问题的,所以还是需要再做一个设置,

在其pop回去的那个页面里加上两行代码:

NSNumber * number = [NSNumber numberWithInt:UIInterfaceOrientationMaskPortrait];

 [[UIDevice currentDevice] setValue:number forKey:@"orientation"];

这样就解决了这个问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: