获取iPhone的物理屏幕尺寸(以英寸为单位)

获取iPhone的物理屏幕尺寸(以英寸为单位),iphone,ios,screen,screen-size,Iphone,Ios,Screen,Screen Size,如何以编程方式以英寸为单位获得屏幕大小(例如iPhone4,3.5英寸) 我通过检测iPhone/iPad型号找到了一种方法,但硬编码不是我想要的,所以我看起来不像那样。我找到了一个不错的GitHub项目,名为“GBDeviceInfo”: if ([GBDeviceInfo deviceDetails].display == GBDeviceDisplayiPhone35Inch) { //3.5 inch iphone } else if ([GBDeviceInfo deviceD

如何以编程方式以英寸为单位获得屏幕大小(例如iPhone4,3.5英寸)


我通过检测iPhone/iPad型号找到了一种方法,但硬编码不是我想要的,所以我看起来不像那样。

我找到了一个不错的GitHub项目,名为“GBDeviceInfo”:

if ([GBDeviceInfo deviceDetails].display == GBDeviceDisplayiPhone35Inch) {
    //3.5 inch iphone
}
else if ([GBDeviceInfo deviceDetails].display == GBDeviceDisplayiPhone4Inch) {
    //4 inch iphone
}
else if ([GBDeviceInfo deviceDetails].display == GBDeviceDisplayiPad) {
    //ipad
}

这里是:

这将找到设备的对角线屏幕大小:

float scale = [[UIScreen mainScreen] scale];

float ppi = scale * ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 132 : 163);

float width = ([[UIScreen mainScreen] bounds].size.width * scale);
float height = ([[UIScreen mainScreen] bounds].size.height * scale);

float horizontal = width / ppi, vertical = height / ppi;

float diagonal = sqrt(pow(horizontal, 2) + pow(vertical, 2));

对角线
将包含屏幕的对角线大小,单位为英寸。

屏幕的Swift 4版本

    let scale = UIScreen.main.scale

    let ppi = scale * ((UIDevice.current.userInterfaceIdiom == .pad) ? 132 : 163);

    let width = UIScreen.main.bounds.size.width * scale
    let height = UIScreen.main.bounds.size.height * scale

    let horizontal = width / ppi, vertical = height / ppi;

    let diagonal = sqrt(pow(horizontal, 2) + pow(vertical, 2))
    let screenSize = String(format: "%0.1f", diagonal)

这真的为所有设备提供了正确的值吗?这样我们就可以找到设备的屏幕大小,但每个人都在论坛上告诉我们这是不可能的。不,iOS设备有各种不同PPI计数的屏幕:132、264、326和401。据我所知,您无法从使用SDK的设备获取PPI。我看到的唯一选项是用适当的PPI映射每个单独的设备名称。使用UIScreen nativeScale获取物理屏幕的比例因子。结果将是401 PPI的升级版或458的XWhy,为了对Chtulhu的爱,你会想要吗?我只是开玩笑,但这个要求肯定表明你走错了方向。以英寸为单位,甚至…@katzenhut我记不起它叫什么了,但有一个公式可以根据屏幕大小计算出最佳视频比特率。所以就是因为这个原因。现在回想起来,我很高兴我没有像MCKapur建议的那样硬编码或使用硬编码库,因为从那时起又发布了5部iPhone和更多新的iOS设备。@katzenhut:屏幕上显示一英寸的标尺,实际上是一英寸长。这不再准确,iphone6plus报告了一个5.2英寸的屏幕,实际上是5.5英寸,还有一些其他不正确的屏幕尺寸