服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS如何获取屏幕宽高、设备型号、系统版本信息

iOS如何获取屏幕宽高、设备型号、系统版本信息

2021-02-21 14:42Cloudox_ IOS

这篇文章主要介绍了iOS如何获取屏幕宽高、设备型号、系统版本信息的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

介绍
在我学习Android开发的时候,觉得设备适配是件很头疼的事情,android的设备太多了,那时就很羡慕iOS开发的人不用操心适配的问题,而当我开始学习iOS开发后,iOS的屏幕也开始多种多样了起来...于是也得做适配了,sad...
之前也研究过,这里把我的方法记录下来,本文介绍三个常用的设备信息获取方式:

  • 获取屏幕的宽高。用于在设置控件位置的时候计算相对屏幕的距离
  • 获取设备的型号。5s和6+的屏幕大小相差很远,相应的控件位置、大小都需要做出调整,不然就会出现在6+上显得很空旷或者在5s上显示不全的问题。
  • 获取系统版本。不同的系统版本有着不同的特性,举个栗子,iOS 9以下的版本就没有Live Photo;再举个栗子,iOS 7以上的系统版本往往需要调整一下边界

接下来详细说说各自的获取方法,其实都还比较简单。

1、获取屏幕的宽高

屏幕的宽高是一个常常需要用到的信息,尤其是当你用代码写UI时。比如当你写一个UILabel,设置其frame时,你想要它居中,而你想为其设置的宽度为200,那怎么设置它的x值呢?就是(屏幕的宽度 - 200)/ 2了对吧,这样就可以保证不管在什么设备上它永远是居中的。获取屏幕宽、高的方法如下:

?
1
2
3
4
5
// 设备宽度
 [UIScreen mainScreen].bounds.size.width
 
// 设备高度
[UIScreen mainScreen].bounds.size.height

一般来说我们在pch文件里将其设置为宏,这样在每个地方就都可以调用了,就不用每次都用这么长一串代码:

?
1
2
3
//设备的宽高
#define SCREENWIDTH    [UIScreen mainScreen].bounds.size.width
#define SCREENHEIGHT   [UIScreen mainScreen].bounds.size.height

这样在需要用的地方直接使用宏SCREENWIDTH和SCREENHEIGHT就可以了。

2、获取设备的型号

获取设备型号有几种方法,这里我使用的是比较笨的方法,获取设备的分辨率来判断设备的型号。我们先看下面这张表:

iOS如何获取屏幕宽高、设备型号、系统版本信息

关注设备分辨率那一列,我们可以看到几款屏幕的设备的分辨率是不同的,因此也就可以以此为依据判断设备型号,我这里判断了几种当前最常见的型号,同样使用了宏:

?
1
2
3
4
// 根据屏幕分辨率判断设备,是则返回YES,不是返回NO
#define isiPhone5or5sor5c ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define isiPhone6or6s ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define isiPhone6plusor6splus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)

那么我只需要判断这几个值哪一个是YES,就可以知道当前是哪个型号了,如:

?
1
2
3
4
5
6
7
if (isiPhone5or5sor5c) {
  NSLog(@"这是 iPhone5 或 5s 或 5c") ;
} else if (isiPhone6or6s) {
  NSLog(@"这是 iPhone6 或 6s");
} else if (isiPhone6plusor6splus) {
  NSLog(@"这是 iPhone6plus 或6splus");
}

这样就可以啦。
其实相应的iPad、iTouch等也都可以这么判断,只要找到对应的分辨率来判断就好。

3、获取系统版本

获取系统版本同样适用宏来方便全局调用:

?
1
2
// 设备的系统版本
#define SystemVersion ([[UIDevice currentDevice] systemVersion])

这样你就可以获取版本号了,可以打印出来:
NSLog(@"当前运行系统为:iOS%@", SystemVersion); 

在使用的时候,可以转化为float型的数来进行判断,如:

?
1
2
3
4
if ([SystemVersion floatValue] >= 7.0)
{
  ……
}

常用的获取设备信息的方法就在这里啦,希望能帮到大家~
这里是我在github的示例工程地址:https://github.com/Cloudox/GetDeviceInfoDemo,欢迎star和fork~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/cloudox_/article/details/50337137

延伸 · 阅读

精彩推荐
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25