当shouldAutorotate = NO并且只允许肖像时,如何确定设备方向?

时间:2016-11-25 08:02:53

标签: ios objective-c iphone rotation orientation

我正在开展一个项目,我希望根据设备的方向替换图标而不允许viewController旋转。我有几个允许旋转的viewController和其他在我的导航控制器中指定不允许旋转的内容。

这个实现正是我想要的。

导航控制器中的代码:

- (BOOL)shouldAutorotate
{
    id currentViewController = self.topViewController;

    if ([currentViewController isKindOfClass:[ChimpTabBarController class]]) {
        ChimpTabBarController *tabbarController = (ChimpTabBarController*)currentViewController;

        if (tabbarController.selectedIndex == 0){
            return NO;
        }
    } else if ([currentViewController isKindOfClass:[RotationViewController class]] || [currentViewController isKindOfClass:[ChimpBlackoutVC class]] || [currentViewController isKindOfClass:[EditPictureVC class]]) {
        return NO;
    }
    return YES;
}



-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
    id currentViewController = self.topViewController;

    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;


    if ([currentViewController isKindOfClass:[ChimpTabBarController class]]) {
        ChimpTabBarController *tabbarController = (ChimpTabBarController*)currentViewController;

        if (tabbarController.selectedIndex == 0){
            return (UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown);
        }
    } else if ([currentViewController isKindOfClass:[RotationViewController class]] || [currentViewController isKindOfClass:[ChimpBlackoutVC class]] || [currentViewController isKindOfClass:[EditPictureVC class]]) {
        return (UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown);
    }
    return UIInterfaceOrientationMaskAll;
}

有没有办法找出我的设备想要转向哪个轮换,但是不允许?这样我就可以改变箭头的方向,一个单词等...

由于

1 个答案:

答案 0 :(得分:0)

我自己找到了一种方式,比预期的要快。

对于您的应用程序,您可以使用:

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;

但是当旋转禁用时,您可以随时询问设备的方向:

[[UIDevice currentDevice] orientation]

然后在你的viewcontroller中添加一个观察者,以了解设备何时改变方向:

- > How to check Device Orientation Change From Portrait To Landscape and Vice-Versa in iPad

希望这将有助于未来的人们。