目前常用的是通過屏幕分辨率來區(qū)分iphone設(shè)備型號(iphone4、iphone5蛤奢、iphoneX等等)鬼癣,不過在有些時候使用這個方法判斷會出現(xiàn)錯誤的結(jié)果陶贼。經(jīng)過查閱資料,找到以下方法來判斷待秃,此方法是相當(dāng)?shù)目孔V拜秧!靠譜!靠譜U掠簟M鞯!廢話不多說暖庄,直接上代碼:
ps:需要引入頭文件:
#import "sys/utsname.h"
#import <UIKit/UIkit.h>
.h文件:
typedefNS_ENUM(NSInteger,APDeviceType) {
? ? APDeviceIphone4 =0,//iphone4系列設(shè)備
? ? APDeviceIphone5,//iphone5系列設(shè)備
? ? APDeviceIphone6,//iphone6系列設(shè)備
? ? APDeviceIphonePlus,//iphonePlus系列設(shè)備
? ? APDeviceIphoneX,//iphoneX系列設(shè)備
? ? APDeviceIphoneSimulator,//iphone模擬器
? ? APDeviceIphoneOther//其他iphone系列設(shè)備
};
@interfaceKS_Tool :NSObject
//獲取手機(jī)設(shè)備型號
+ (APDeviceType)currentDeviceType;
@end
.m文件:
+ (APDeviceType)currentDeviceType
{
? ? structutsnamesystemInfo;
? ? uname(&systemInfo);
? ? NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
? ? if([deviceString isEqualToString:@"iPhone3,1"])? ? returnAPDeviceIphone4;
? ? if([deviceString isEqualToString:@"iPhone3,2"])? ? returnAPDeviceIphone4;
? ? if([deviceString isEqualToString:@"iPhone3,3"])? ? returnAPDeviceIphone4;
? ? if([deviceString isEqualToString:@"iPhone4,1"])? ? returnAPDeviceIphone4;
? ? if([deviceString isEqualToString:@"iPhone5,1"])? ? returnAPDeviceIphone5;
? ? if([deviceString isEqualToString:@"iPhone5,2"])? ? returnAPDeviceIphone5;
? ? if([deviceString isEqualToString:@"iPhone5,3"])? ? returnAPDeviceIphone5;
? ? if([deviceString isEqualToString:@"iPhone5,4"])? ? returnAPDeviceIphone5;
? ? if([deviceString isEqualToString:@"iPhone6,1"])? ? returnAPDeviceIphone5;
? ? if([deviceString isEqualToString:@"iPhone6,2"])? ? returnAPDeviceIphone5;
? ? if([deviceString isEqualToString:@"iPhone7,1"])? ? returnAPDeviceIphonePlus;
? ? if([deviceString isEqualToString:@"iPhone7,2"])? ? returnAPDeviceIphone6;
? ? if([deviceString isEqualToString:@"iPhone8,1"])? ? returnAPDeviceIphone6;
? ? if([deviceString isEqualToString:@"iPhone8,2"])? ? returnAPDeviceIphonePlus;
? ? if([deviceString isEqualToString:@"iPhone8,4"])? ? returnAPDeviceIphone5;
? ? if([deviceString isEqualToString:@"iPhone9,1"])? ? returnAPDeviceIphone6;
? ? if([deviceString isEqualToString:@"iPhone9,2"])? ? returnAPDeviceIphonePlus;
? ? if([deviceString isEqualToString:@"iPhone9,3"])? ? returnAPDeviceIphone6;
? ? if([deviceString isEqualToString:@"iPhone9,4"])? ? returnAPDeviceIphonePlus;
? ? if([deviceString isEqualToString:@"iPhone10,1"])? returnAPDeviceIphone6;
? ? if([deviceString isEqualToString:@"iPhone10,4"])? returnAPDeviceIphone6;
? ? if([deviceString isEqualToString:@"iPhone10,2"])? returnAPDeviceIphonePlus;
? ? if([deviceString isEqualToString:@"iPhone10,5"])? returnAPDeviceIphone6;
? ? if([deviceString isEqualToString:@"iPhone10,3"])? returnAPDeviceIphoneX;
? ? if([deviceString isEqualToString:@"iPhone10,6"])? returnAPDeviceIphoneX;
? ? if([deviceString isEqualToString:@"x86_64"] || [deviceStringisEqualToString:@"i386"]) {
? ? ? ? if ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO) {
? ? ? ? ? ? return APDeviceIphone5;
? ? ? ? }else if ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO) {
? ? ? ? ? ? return APDeviceIphone6;
? ? ? ? }else if ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(1125, 2001), [[UIScreen mainScreen] currentMode].size)
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ||CGSizeEqualToSize(CGSizeMake(1242,2208), [[UIScreenmainScreen]currentMode].size)) :NO) {
? ? ? ? ? ? return APDeviceIphonePlus;
? ? ? ? }else if ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) {
? ? ? ? ? ? return APDeviceIphoneX;
? ? ? ? }else{
? ? ? ? ? ? return APDeviceIphoneOther;
? ? ? ? }
? ? }
? ? return APDeviceIphoneOther;
}
通過deviceString變量聊替,還可以判斷出對應(yīng)的iPad設(shè)備,此處就不一一列舉了培廓。惹悄。。