随着iPhoneX的发布,导航栏高度在iPhone中也不再是一个64的常量了。 因此,很多地方需要针对齐刘海的导航栏高度做适配,目前网上很多关于判断是否为iPhoneX,使用了屏幕宽高来比较或者utsnamemachine来判断。 这两个方法都有一些缺点,使用宽高不够优雅,以后可能出现相同宽高的屏幕,只使用utsnamemachine的话,在模拟器上就不好做适配了。 于是,在Github上看到一个swift的库DeviceKit , 如果设备是模拟器的话,可以通过NSProcessInfo中的environment拿到SIMULATOR_MODEL_IDENTIFIER值,这个值就是模拟的真机的模型。 不过,这个swift库使用的枚举类型不能被OC调用,老项目中又是使用OC的,因此写了个OC版的: HLDevice。 使用方法很简单,将工程中的HLDevice文件夹拖入你的工程:

#import "HLDevice.h"...HLDevice *device = [[HLDevice alloc] init];
if (device.deviceModel == HLDeviceModel_iPhoneX ) {...
}
复制代码

HLDevice 目前有两个属性:HLDeviceModel, HLDeviceType,

  • HLDeviceModel:用于判断设备模型,如iPhoneX等
  • HLDeviceType: 用于判断设备类型,目前有三种: HLDeviceTypeUnkown: 未知设备, HLDeviceTypeRealMachine: 真机, HLDeviceTypeSimulator: 模拟器

如果有什么问题,欢迎大家去HLDevice上提出issue

更优雅地判断iOS设备类型相关推荐

  1. JavaScript复杂判断的更优雅写法

    前提 我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越 ...

  2. JavaScript 复杂判断的更优雅写法

    我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃 ...

  3. ios判断当前设备类型

    ios判断当前设备类型 代码如下: + (NSString*) deviceString { // 需要#import "sys/utsname.h" struct utsname ...

  4. 【转】转自微信公众号 JavaScript 复杂判断的更优雅写法

    与微信公众号看到一篇js复杂判断的文章,对我启发很大,故转到博客园以供后期不断学习并应用于项目.原文地址:https://mp.weixin.qq.com/s/ClFDRj4MnAxv1dJ5VWKS ...

  5. 如何更优雅地对接第三方API

    如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/ ...

  6. 9条消除if...else的锦囊妙计,助你写出更优雅的代码

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 前言 最近在做代码重构,发现了很多代码的烂味道.其他的不多说 ...

  7. 教你如何更优雅的设计Java异常

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:lrwinx https://lrwinx.github.i ...

  8. c语言c2182是什么错误,C语言中一种更优雅的异常处理机制

    上一篇文章对C语言中的goto语句进行了较深入的阐述,实际上goto语句是面向过程与面向结构化程序语言中,进行异常处理编程的最原始的支持形式.后来为了更好地.更方便地支持异常处理编程机制,使得程序员在 ...

  9. python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...

    原标题:涨姿势!这些小技巧让小白也可以写出更优雅的Python代码! 一.前言 我前两天回答了两个Python相关的问题,收到了很多赞,从答案被收藏的情况来看,确实对不少人都很有帮助,所以我也很开心. ...

最新文章

  1. php隐式提交iframe,Laravel中通过IFrame来模拟页面异步提交
  2. 速来围观!leetcode java实现汇总
  3. dataframe两个表合并_DAXSQLPython实现报表项目存在串行的财务报表合并
  4. Unreal4有哪些令你印象深刻拍案叫绝的设计
  5. android获取当前位置经纬度,Android中通过GPS或NetWork获取当前位置的经纬度
  6. CSDN博客如何转载
  7. 开源中国大佬是怎么用Selenium做自动化web测试的
  8. Java设计模式(7)——装饰者模式
  9. 收银怎样挂单和取单_挂单取单(PC收银)
  10. 超微小加速度传感器ADXL362设计
  11. matlab 大括号用法,Shell(Bash)小括号和大括号用法及区别
  12. 29-基于单片机的防盗报警系统仿真
  13. Vue禁止浏览器自动填充
  14. Android-GIF图片显示
  15. axure中出现小手_Axure高保真滑动拼图解锁实例教程
  16. 【即时通讯软件系统——开题报告 分享(仅供参考呀)】
  17. iPhone开发 - 3D - 建立3D界面(下)
  18. 系统渗透与防护——信息收集与暴力破解
  19. latex中文小标题_科学网—一个较为完整的中文图书Latex模板 - 张金龙的博文
  20. 计算机人工智能分数,分数一般想学人工智能?这6所双一流大学是首选

热门文章

  1. 【Codevs1322】单词矩阵
  2. 避免在WHERE条件中,在索引列上进行计算或使用函数,因为这将导致索引不被使用...
  3. spring 判断非空提示断言
  4. IT人的学习方法论-2 学习的误区
  5. portlet 与 servlet 的关系
  6. 数据表示字面量整型字面量
  7. delphi中的函数传参如何传枚举参数_shell脚本的函数介绍使用和工作常用案例。建议收藏...
  8. php运行出来一堆乱码,一堆乱码中找到的~_php
  9. centos7 安装 mysql rpm_CentOS7使用rpm安装MySQL8
  10. 19年计算机英语统考,2019年网络教育统考大学英语(B)真题及答案