原文链接:http://www.2cto.com/kf/201504/395081.html
-
判断方法:
我们在适配多个机型时,大多情况下都需要考虑到用户设备的型号,然后根据用户设备的width,height,分辨率等来决定控件或图片的大小。那么如何获知用户设备的型号呢?我个人是通过(下面这个方法)1[[UIScreen mainScreen] bounds];来获取主屏幕的bounds,熟悉的朋友一看到bound或frame肯定就会想到CGRect 这个结构体(struct),而bounds当然也是这个结构体的一个变量其中CGRect的成员中有一个CGSize(也是结构体),CGSize的成员包括width,height所以当前我们就获得主屏幕的宽以及高了,然后对应下边的数据就可知道用户使用的具体机型了如下:各系列机型竖屏时的 宽*高portrait width * heightiPhone4:320*480iPhone5:320*568iPhone6:375*667iPhone6Plus:414*736数据参考于 IOS设备设计完整指南 一文代码示例:此处创建了一个UIDevice的categoryUIDevice+IPhoneModel.h1 typedef NS_ENUM(char, iPhoneModel){//0~32 iPhone4,//320*4803 iPhone5,//320*5684 iPhone6,//375*6675 iPhone6Plus,//414*7366 UnKnown7 };89 @interface UIDevice (IPhoneModel)1011 /**12 * return current running iPhone model13 *14 * @return iPhone model15 */16 + (iPhoneModel)iPhonesModel;1718 @endUIDevice+IPhoneModel.m1 #import "UIDevice+IPhoneModel.h"23 @implementation UIDevice (IPhoneModel)45 /**6 * return current running iPhone model7 *8 * @return iPhone model9 */10 + (iPhoneModel)iPhonesModel {11 //bounds method gets the points not the pixels!!!12 CGRect rect = [[UIScreen mainScreen] bounds];1314 CGFloat width = rect.size.width;15 CGFloat height = rect.size.height;1617 //get current interface Orientation18 UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];19 //unknown20 if (UIInterfaceOrientationUnknown == orientation) {21 return UnKnown;22 }2324 // portrait width * height25 // iPhone4:320*48026 // iPhone5:320*56827 // iPhone6:375*66728 // iPhone6Plus:414*7362930 //portrait31 if (UIInterfaceOrientationPortrait == orientation) {32 if (width == 320.0f) {33 if (height == 480.0f) {34 return iPhone4;35 } else {36 return iPhone5;37 }38 } else if (width == 375.0f) {39 return iPhone6;40 } else if (width == 414.0f) {41 return iPhone6Plus;42 }43 } else if (UIInterfaceOrientationLandscapeLeft == orientation || UIInterfaceOrientationLandscapeRight == orientation) {//landscape44 if (height == 320.0) {45 if (width == 480.0f) {46 return iPhone4;47 } else {48 return iPhone5;49 }50 } else if (height == 375.0f) {51 return iPhone6;52 } else if (height == 414.0f) {53 return iPhone6Plus;54 }55 }5657 return UnKnown;58 }5960 @end