如何找到纵向或横向的屏幕方向?

时间:2012-07-07 15:24:07

标签: iphone objective-c ios frame uiscreen

我无法相信这是不可能的。这只是每个人都必须要做的事情之一。

所以,这个:

[UIScreen currentScreen] bounds];
无论手机是纵向还是横向,

都会在iPhone上返回320的宽度。所以我做了这个辅助方法:

+(CGRect)screenFrame {

    CGRect frame = [UIScreen mainScreen].bounds;

    if (UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])) {
        return frame;
    }
    else {
        CGRect newFrame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.height, frame.size.width);
        return newFrame;
    }

}

哪种方法效果很好,除非设备平放,显然会让它认为它是在风景中,即使屏幕没有变为风景。

我如何调整它以使其正常工作?

1 个答案:

答案 0 :(得分:3)

最佳指导(主要是因为'平躺'方向)是使用[[UIApplication sharedApplication] statusBarOrientation]。然后,这将根据应用程序调整主窗口坐标转换矩阵的方式为您提供正确的值。