iPhoneX推出已經(jīng)有很長時間了,從最初的簡單適配到前一段時間拿到真機開始做更優(yōu)化的適配宾舅,我在部分地方用到了判斷手機型號及系統(tǒng)版本的方法罐氨,下面分享一下。
首先需要導入頭文件
#import <sys/utsname.h>
之后進行判斷
struct utsname systemInfo;
uname(&systemInfo);
NSString*phoneType = [NSString stringWithCString: systemInfo.machine encoding:NSASCIIStringEncoding];
if([phoneType isEqualToString:@"iPhone1,1"]) return@"iPhone 2G";
if([phoneType isEqualToString:@"iPhone1,2"]) return@"iPhone 3G";
if([phoneType isEqualToString:@"iPhone2,1"]) return@"iPhone 3GS";
if([phoneType isEqualToString:@"iPhone3,1"]) return@"iPhone 4";
if([phoneType isEqualToString:@"iPhone3,2"]) return@"iPhone 4";
if([phoneType isEqualToString:@"iPhone3,3"]) return@"iPhone 4";
if([phoneType isEqualToString:@"iPhone4,1"]) return@"iPhone 4S";
if([phoneType isEqualToString:@"iPhone5,1"]) return@"iPhone 5";
if([phoneType isEqualToString:@"iPhone5,2"]) return@"iPhone 5";
if([phoneType isEqualToString:@"iPhone5,3"]) return@"iPhone 5c";
if([phoneType isEqualToString:@"iPhone5,4"]) return@"iPhone 5c";
if([phoneType isEqualToString:@"iPhone6,1"]) return@"iPhone 5s";
if([phoneType isEqualToString:@"iPhone6,2"]) return@"iPhone 5s";
if([phoneType isEqualToString:@"iPhone7,1"]) return@"iPhone 6 Plus";
if([phoneType isEqualToString:@"iPhone7,2"]) return@"iPhone 6";
if([phoneType isEqualToString:@"iPhone8,1"]) return@"iPhone 6s";
if([phoneType isEqualToString:@"iPhone8,2"]) return@"iPhone 6s Plus";
if([phoneType isEqualToString:@"iPhone8,4"]) return@"iPhone SE";
if([phoneType isEqualToString:@"iPhone9,1"]) return@"iPhone 7";
if([phoneType isEqualToString:@"iPhone9,2"]) return@"iPhone 7 Plus";
if([phoneType isEqualToString:@"iPhone10,1"]) return@"iPhone 8";
if([phoneType isEqualToString:@"iPhone10,4"]) return@"iPhone 8";
if([phoneType isEqualToString:@"iPhone10,2"]) return@"iPhone 8 Plus";
if([phoneType isEqualToString:@"iPhone10,5"]) return@"iPhone 8 Plus";
if([phoneType isEqualToString:@"iPhone10,3"]) return@"iPhone X";
if([phoneType isEqualToString:@"iPhone10,6"]) return@"iPhone X";
if([phoneType isEqualToString:@"iPhone11,8"]) return@"iPhone XR";
if([phoneType isEqualToString:@"iPhone11,2"]) return@"iPhone XS";
if([phoneType isEqualToString:@"iPhone11,4"]) return@"iPhone XS Max";
if([phoneType isEqualToString:@"iPhone11,6"]) return@"iPhone XS Max";
來源網(wǎng)站 https://www.theiphonewiki.com/wiki/Models
每個人的適配方法不同缭贡,我在開發(fā)中只需要判斷iPhoneX炉擅。
判斷手機系統(tǒng)版本,iOS 11以后有時候需要進行一下特別的修改
NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];
或者
if (@available(iOS 11.0, *)) {
//
}