iOS开发 iPhoneX以上机型适配判断

其实iphoneX以上(包括新发布)的机型无非就是多了刘海屏,多了safeArea,所以只要判断有没有safeArea就可以了。
用xcode10打包的前提下
iOS11没有刘海设备的安全区域大小是UIEdgeInsetsMake(0, 0, 0, 0);iOS12没有刘海设备的安全区域大小是UIEdgeInsetsMake(20, 0, 0, 0)
所以这里直接判断safeArea的top是否大于20,大于20是有刘海的设备,否则是无刘海设备
当然也可以判断safeArea的bottom取值,这里判断的是safeArea的top是否大于20
附上代码

#define isIphoneX ({\
int tmp = 0;\
if (@available(iOS 11.0, *)) {\
if ([UIApplication sharedApplication].delegate.window.safeAreaInsets.top > 20 || [UIApplication sharedApplication].delegate.window.safeAreaInsets.left > 20) {\
tmp = 1;\
}else{\
tmp = 0;\
}\
}else{\
tmp = 0;\
}\
tmp;\
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,928评论 25 709
  • 随着iPhoneX的发布,适配问题也随之而来 我们先在最前面说一下适配的中心思想: 1、X上的状态栏从20pt变成...
    feedback1991阅读 948评论 0 1
  • iPhone发布会前,就隐隐感觉到一波适配工作要袭来的赶脚,果然不出所料。新版iPhone的适配工作主要集中在iP...
    轻尘_小吕阅读 237评论 2 0
  • 在项目开发中,接触到load和initialize这两个方法,发现这是两个很有意思的方法,NSObject.h的头...
    浩杰ee阅读 553评论 0 2
  • 文/讳莫如深 告别了冬日的严寒,大地在从沉睡中慢慢苏醒,昨天还冒着新芽的绿植,仿佛一夜之间堆成了整片云海。阴沉了多...
    深蓝色的鲸鱼阅读 397评论 0 2