如何在viewDidLoad之前检测设备方向?

时间:2013-10-31 12:56:45

标签: ios orientation device uiinterfaceorientation

我需要在控制器中运行viewDidLoad方法之前检测设备方向。我尝试了其他问题中的所有解决方案,但我无法解决。

在xCode 5和iOS 7中使用SotryBoard的最佳方法是什么?

提前谢谢!

编辑:其实我正在使用

- (void)viewDidLoad {

    [super viewDidLoad];

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

        switch ([[UIDevice currentDevice] orientation]) {
            case (UIDeviceOrientationPortrait):
                // landscape layout
                break;

            default:
                // portrait layout
                break;
        }

但它不起作用......

已解决:使用

- (void)viewDidLoad {

    [super viewDidLoad];

    if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown) {
        // Portrait
    }

    if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight){
        // Landscape
    }
}

2 个答案:

答案 0 :(得分:3)

你需要

[[UIDevice currentDevice] orientation]吗?

答案 1 :(得分:2)

尝试检查状态栏方向:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

此外,还有一些其他视图控制器方法在viewDidLoad之前触发。看看awakeFromNib和initWithCoder。