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了对吧,这样就可以保证不管在什么设备上它永远是居中的。获取屏幕宽、高的方法如下:
// 设备宽度 [uiscreen mainscreen].bounds.size.width // 设备高度 [uiscreen mainscreen].bounds.size.height
一般来说我们在pch文件里将其设置为宏,这样在每个地方就都可以调用了,就不用每次都用这么长一串代码:
//设备的宽高 #define screenwidth [uiscreen mainscreen].bounds.size.width #define screenheight [uiscreen mainscreen].bounds.size.height
这样在需要用的地方直接使用宏screenwidth和screenheight就可以了。
2、获取设备的型号
获取设备型号有几种方法,这里我使用的是比较笨的方法,获取设备的分辨率来判断设备的型号。我们先看下面这张表:
关注设备分辨率那一列,我们可以看到几款屏幕的设备的分辨率是不同的,因此也就可以以此为依据判断设备型号,我这里判断了几种当前最常见的型号,同样使用了宏:
// 根据屏幕分辨率判断设备,是则返回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,就可以知道当前是哪个型号了,如:
if (isiphone5or5sor5c) { nslog(@"这是 iphone5 或 5s 或 5c") ; } else if (isiphone6or6s) { nslog(@"这是 iphone6 或 6s"); } else if (isiphone6plusor6splus) { nslog(@"这是 iphone6plus 或6splus"); }
这样就可以啦。
其实相应的ipad、itouch等也都可以这么判断,只要找到对应的分辨率来判断就好。
3、获取系统版本
获取系统版本同样适用宏来方便全局调用:
// 设备的系统版本 #define systemversion ([[uidevice currentdevice] systemversion])
这样你就可以获取版本号了,可以打印出来:
nslog(@"当前运行系统为:ios%@", systemversion);
在使用的时候,可以转化为float型的数来进行判断,如:
if ([systemversion floatvalue] >= 7.0) { …… }
常用的获取设备信息的方法就在这里啦,希望能帮到大家~
这里是我在github的示例工程地址:https://github.com/cloudox/getdeviceinfodemo,欢迎star和fork~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Jsoup解析HTML实例及文档方法详解
下一篇: 详解IOS四种保存数据的方式