iphone - 如何找出屏幕方向,纵向还是横向?

标签 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;
    }

}

这很好用,除了当设备平放时,显然这会让它认为它是横向的,即使屏幕没有变成横向。

我怎样才能调整它以使其正常工作?

最佳答案

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

关于iphone - 如何找出屏幕方向,纵向还是横向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11376216/

相关文章:

objective-c - Obj-C/Cocos2d内存问题,调用属性时exc_bad_access

iOS:是否可以以编程方式读取手机电池百分比?

iphone - 无法使用 "rvictl"命令为 iOS 设备设置 RVI

iphone - 我们可以将 UI 自动化工具与 iPhone 模拟器一起使用吗?

iphone - 如何生成一个填充了app文件夹中所有文件的UITableViewController?

iphone - 在 View 之间传递数据不起作用

iphone - 如何在 View Controller 之间传递数据

objective-c - 将标签绑定(bind)到类的属性

ios - 在 xcode 日志中启用 Firebase 自动屏幕报告

ios - 如何在 Objc 项目中使用 SnapKit?