如何判断iPhone是iPhoneX系列?

时间:2018-09-21 13:00:44

标签: ios objective-c

有没有办法判断iPhone是iPhoneX系列(iPhone X XR XS XSmax)?

我的方式是:

#define iPhoneXSeries (([[UIApplication sharedApplication] statusBarFrame].size.height == 44.0f) ? (YES):(NO))

有什么隐患吗?

还是有更好的方法?

2 个答案:

答案 0 :(得分:6)

  

我需要知道,因为iPhoneX系列状态栏的高度是不可变的,但是其他iPhone状态栏的高度可以更改

因此,您真的根本不需要知道您的应用程序是否在iPhone X系列手机上运行-您真正要找出的是状态栏高度是否可以更改。而且我会说,您甚至不必真正关心状态栏,因为您想知道可以在视图中放置内容的位置,以便状态栏始终不会遮挡内容和其他系统对象。不管是不是这种情况,您都应确保询问正确的问题。 不要依靠设备型号来告诉您功能,也不要依靠特定功能来告诉您设备型号。

iOS通常为您提供一种查找所需功能的方法。如果您的目标是保持内容可见,则应使用UIView的{​​{1}}属性以及safeAreaInsets方法,当安全区域更改时(例如,当状态栏高度更改)。然后,您可以调整内容以适应新的安全插图。以这种方式构建应用程序意味着您不必担心应用程序会在具有意外功能集的新设备型号上出现故障,也不必担心将来的iOS更新会破坏您的假设。

答案 1 :(得分:-3)

尝试一下:

let size = UIScreen.mainScreen().bounds.size
print("Your device size: \(size)");

if size.height == 814 {
print("This is an iPhone X")
}