保证能判断,呕心沥血,不行切JIJI

方法一


Objective-C

// iPhoneX、iPhoneXR、iPhoneXs、iPhoneXs Max等
// 判断刘海屏,返回YES表示是刘海屏
- (BOOL)isNotchScreen {if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {return NO;}CGSize size = [UIScreen mainScreen].bounds.size;NSInteger notchValue = size.width / size.height * 100;if (216 == notchValue || 46 == notchValue) {return YES;}return NO;
}

Swift

extension UIViewController {/// iPhoneX、iPhoneXR、iPhoneXs、iPhoneXs Max等/// 判断刘海屏,返回true表示是刘海屏///var isNotchScreen: Bool {if UIDevice.current.userInterfaceIdiom == .pad {return false}let size = UIScreen.main.bounds.sizelet notchValue: Int = Int(size.width/size.height * 100)if 216 == notchValue || 46 == notchValue {return true}return false}
}

方法二


Objective-C

 // 如果是刘海屏if (self.view.safeAreaInsets.bottom > 0) {// do something     }

Swift

 // 如果是刘海屏if self.view.safeAreaInsets.bottom > 0 {// do something         }

方法一与方法二比较


  • 方法二很明显的优势是代码少,缺点是依赖UIView实例,在一些非UI场景的逻辑处理中如果要判断刘海屏,就不是很友好,当然你也可以先获得当前View实例然后再判断,还有一个问题就是在iPad上safeAreaInsets.bottom的值也是大于0,如果是通用APP就不适用了
  • 方法一代码多,这是缺点;优点是通用,不依赖UIView实例,可以在任何场景自由使用,在iPad/iPhone中可精准识别,无须做代码修改
  • 方法一与方法二共同的缺点就是,如果在子线程中调用,都要先切回主线程,否则会导致崩溃
  • 两种方法任君选择

更多文章请访问我的博客

iOS开发:判断iPhone是否是刘海屏iPhoneX、iPhoneXR、iPhoneXs、iPhoneXs Max等相关推荐

  1. iOS开发适配iPhone X 齐刘海处理,代码适配iPhoneX

    我的简书新地址,欢迎点击查看哦~ 今天手头工作完事了,然后升级了Xcode9,变化很大啊,先说大家一直关心的适配齐刘海吧. 这个东西好像出来之后 我QQ群里面iOS开发的很多人都炸了.确实这个齐刘海对 ...

  2. Android 适配刘海屏之 判断手机是否是刘海屏

    话不多说 直接上代码 判断vivo是否有刘海屏 /*** 判断vivo是否有刘海屏* https://swsdl.vivo.com.cn/appstore/developer/uploadfile/2 ...

  3. 苹果官宣!iOS 16正式定档了 刘海屏MacBook Air或亮相

    要知道苹果每年除了春季.秋季两场硬件发布会之外,在每年6月份会举办的WWDC开发者大会也是一次重要活动,例如iOS.iPad OS.Watch OS.Mac OS 等等.这不按照惯例,今年的苹果开发者 ...

  4. iOS开发视频背景及播放闪屏处理,卡顿处理

    视频播放方式 iOS开发视频播放,四种方法,MPMoviePlayerController,MPMoviePlayerViewController,AVPlayer,AVPlayerViewContr ...

  5. 我常去的ios开发论坛/iphone开发论坛

    1. Devdiv 综合性的移动开发社区,android/ios/windows phone都很有人气,其中人气最旺的是ios 虽然帖子不是最多的,但是人气是最旺的,版主非常热情 [url]http: ...

  6. 解决HTML5+sdk开发的webapp兼容各种刘海屏的问题

    近一年各种刘海屏相继出世,特此记录解决方案 在manifest.json文件下的代码视图中 plus对象下添加如下代码即可 "splashscreen" : {"auto ...

  7. iOS开发 关于iPhone X 的适配

    友情链接:XCODE 9:最新功能详尽介绍 1.屏幕尺寸相关变化 高度增加了145pt,变成812pt. 屏幕圆角显示,注意至少留10pt边距. 状态栏高度由20pt变成44pt,留意这个距离就能避开 ...

  8. iOS开发:iPhone设备图片、音乐、视频获取实践

    背景介绍 出于项目需求,需要基于iphone设备内图片及音乐.视频资源完成一些功能.功能包括以几点:1.需要在APP内获得并处理iphone设备内的图片.音频和视频:2.在APP内嵌入拍照入口,可以拍 ...

  9. iOS开发 区分Home键和锁屏键事件

    转载自: https://a1049145827.github.io/2018/01/06/iOS%E5%BC%80%E5%8F%91-%E5%8C%BA%E5%88%86Home%E9%94%AE% ...

最新文章

  1. icop java,java基于spring注解AOP的异常处理的方法
  2. Python之路,day22-BBS基础
  3. 测试工具 - Postman接口测试入门使用手册,Postman如何进行数据关联、自动更新cookies、简单编程
  4. SqlServer还原数据库时提示:异常终止,不能在此版本的SQL Server中启动,因为它包含分区函数
  5. 【转】C#格式化字符串
  6. 李彦宏最新演讲:移动互联网的时代已经结束了
  7. centos 升级gcc
  8. 编写Play 2的模块,第1部分:使工作正常
  9. 浅入深出Vue:子组件与数据传递
  10. vb子程序未定义怎么改怎么办_vb中子程序或者函数未定义!求教解决方案,
  11. 库存管理与订单的控制
  12. 使用PDF Converter OCR for Mac如何区分扫描的PDF和普通文件?
  13. gdal-3.1.2-release下载页面出错
  14. webvector将html转为svg或者png图片的工具
  15. 姿态估计2-03:PVNet(6D姿态估计)-白话给你讲论文-翻译无死角(1)
  16. 如何提取PDF页面?3种拆分PDF的方法
  17. TCP连接耗尽攻击异常报文攻击与防御
  18. 【ABAQUS2022】ABAQUS2022安装+汉化+帮助文档下载教程
  19. (二)Java线程与系统线程,生命周期
  20. 【奈茶君】STM32F407驱动WS2812

热门文章

  1. 计算机毕业设计ssm文理读书分享平台8xkh2系统+程序+源码+lw+远程部署
  2. C++七种序列容器类型
  3. redis切换查询数据库 db0到db3
  4. spring_boot 发布成war包 ,部署到外部的tomcat
  5. 计算机房的英语该怎么读,计算机机房硬件维护,Computer room hardware maintenance,音标,读音,翻译,英文例句,英语词典...
  6. g第十四周,十五周作业
  7. 1+3+5+....+99的和为
  8. 视频批量添加滚动字幕,我1分钟就搞定了
  9. 【Python-1】
  10. 用计算机弹咱们结婚吧乐谱,用计算器弹奏“周杰伦”,这些乐谱也太简单了吧!...