ios - 使用宏检测 iPhone X

标签 ios objective-c cocoa-touch

<分区>

如何检测在 iPhone X 上运行?我尝试了以下代码。

#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
#define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))
#define IS_IPHONE_X (IS_IPHONE && SCREEN_MAX_LENGTH == 812.0)

当我在 iOS 模拟器中运行这个宏时,IS_IPHONE_X 为真。这个宏是否正确?

最佳答案

根据 Apple Human Interface Guidelines , iPhone X 的 屏幕宽度 = 375 和屏幕高度 = 812 所以,我认为这似乎是正确的!

你可以像这样写宏

 #define IS_IPHONE4 (([[UIScreen mainScreen] bounds].size.height-480)?NO:YES)

 #define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)

#define IS_IPHONE6 (([[UIScreen mainScreen] bounds].size.height-667)?NO:YES)

#define IS_IPHONE6P (([[UIScreen mainScreen] bounds].size.height-736)?NO:YES)

 #define IS_IPHONEX (([[UIScreen mainScreen] bounds].size.height-812)?NO:YES)

关于ios - 使用宏检测 iPhone X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46196964/

相关文章:

ios - 在 neo4j 支持的 iOS 应用程序上创建节点时分配 UUID

ios - iOS-如何构建数据库以符合iCloud备份规则

iphone - 如何在场景 objective-c 之间传递信息

ios - 显示今天 View 小部件内容的正确方法

ios - 将弃用的属性重新分配给新属性 objective-c

ios - 基本: error in swift code but cannot find out why

objective-c - [UIView transitionWithView...] 和 [UIView transitionFromView...] 的区别

c++ - 真的有类似 Objective C++ 的东西吗?

iphone - 在我的 iPhone 应用程序内读取 "Settings"应用程序中的通知标志

iphone - 以随机时间间隔执行方法