关于ios:物镜c检测iphone X给出的尺寸不正确(2001年,而不是2436)

objectivec detecting iphoneX gives incorrect dimensions (2001, not 2436)

我试图在目标C中检测到一个iphone x,并发现了一些帖子/指南/网站,如https://hype.codes/how-detect-iphone-x-以编程的方式显示如何操作以及与之比较的值。这通常意味着检查[[uiscreen mainscreen]本机边界].size.height for 2436或[[uiscreen mainscreen]边界].size.height for 812

但奇怪的是:当我使用两种高度尺寸时,得到的结果与预期值不同。

对于本地人来说,我得到的是2001年,而不是2436年。使用边界时,我得到667,而不是812,这与任何iPhone6/7/8检测相同。

在这两种情况下,我的结论是缺少145px(和native bounds@3x=435)的大小差异,但是为什么我不能得到正确的大小呢?如iOS人机界面指南所示iOS人机界面指南维度

我在模拟器和一个实际的iPhone上都试过这个,有人很好地让我做了实验,但是一直遇到这个问题,我完全陷在这个问题上了。

我真的希望有人能帮助我识别和解决这个问题,马阿尼,提前谢谢。


我不能亲自复制你的问题,但是我在这里找到了答案:https://stackoverflow.com/a/47819966/341994

简言之,您正在构建一个较早的iOS系统或Xcode(或两者)版本,其中iPhoneX是未知的。所以,正如你所说,iPhoneX就像iPhone8,因为这是你的iOS系统所理解的。如果不这样做,所有较旧的应用程序都会在iPhone X上断开。并且给出的值是准确的,因为给出的尺寸是显示应用程序的尺寸;这些尺寸中都有"字母框"。

更新到xcode 9.2并针对iOS 11.2进行构建以解决您的问题。