閑來無事幕庐,認(rèn)真整理了一下iPhone機(jī)型,查看博客的時候有點(diǎn)疑惑為什么有的判斷機(jī)型有兩種尺寸呢家淤?為了解決這個問題异剥,用真機(jī)進(jìn)行測試,發(fā)現(xiàn)在標(biāo)準(zhǔn)模式媒鼓、放大模式下獲取到的屏幕尺寸届吁、分辨率都發(fā)生了變化。
在iPhone6之前只存在一個標(biāo)準(zhǔn)模式绿鸣,在iPhone6之后推出了放大模式,用戶可以進(jìn)行切換暂氯。
iPhone6標(biāo)準(zhǔn)模式潮模,[UIScreen mainScreen].bounds.size = (375, 667)(以下簡稱尺寸),[[UIScreen mainScreen] currentMode].size) = (750痴施,1334)(以下簡稱分辨率)擎厢。
iPhone6放大模式究流,尺寸= (320, 568),分辨率 = (640, 1136)
iPhone6Plus標(biāo)準(zhǔn)模式动遭,尺寸= (414, 736)芬探,分辨率 =(1242, 2208)
iPhone6Plus放大模式,尺寸= (375, 667)厘惦,分辨率 = (1125, 2001)
iPhoneX標(biāo)準(zhǔn)模式(沒有放大模式)偷仿,尺寸 = (375, 812),分辨率 = (1125, 2436)
iPhone6之前沒有放大模式宵蕉,尺寸分辨率如下:
iPhone5標(biāo)準(zhǔn)模式酝静,尺寸 = (320,568)羡玛,分辨率 = (640别智,1136)
iPhone4標(biāo)準(zhǔn)模式,尺寸 = (320稼稿,480)薄榛,分辨率 = (640,960)
所以只要適配了iPhone5让歼,那么iPhone6的放大模式也就適配了蛇数,唯一需要特殊處理的是iPhone6Plus的放大模式和iPhoneX,所以我的判斷代碼如下:
1.OC版
#define IS_IPHONE4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
#define IS_IPHONE5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define IS_IPHONE6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size)) : NO)
#define IS_IPHONE6_PLUS_SCALE ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2001), [[UIScreen mainScreen] currentMode].size) : NO)
#define IS_IPHONE6_PLUS ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size)) : NO)
#define IS_IPHONE_X ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
2是越、swift版
let IS_IPHONE4 = (UIScreen.instancesRespond(to: #selector(getter: UIScreen.main.currentMode)) ? CGSize(width: 640, height: 960).equalTo((UIScreen.main.currentMode?.size)!) : false)
let IS_IPHONE5 = (UIScreen.instancesRespond(to: #selector(getter: UIScreen.main.currentMode)) ? CGSize(width: 640, height: 1136).equalTo((UIScreen.main.currentMode?.size)!) : false)
let IS_IPHONE6 = (UIScreen.instancesRespond(to: #selector(getter: UIScreen.main.currentMode)) ? CGSize(width: 750, height: 1334).equalTo((UIScreen.main.currentMode?.size)!) : false)
let IS_IPHONE6_PLUS = (UIScreen.instancesRespond(to: #selector(getter: UIScreen.main.currentMode)) ? CGSize(width: 1242, height: 2208).equalTo((UIScreen.main.currentMode?.size)!) : false)
let IS_IPHONE6_PLUS_SCALE = (UIScreen.instancesRespond(to: #selector(getter: UIScreen.main.currentMode)) ? CGSize(width: 1125, height: 2001).equalTo((UIScreen.main.currentMode?.size)!) : false)
let IS_IPHONE_X = (UIScreen.instancesRespond(to: #selector(getter: UIScreen.main.currentMode)) ? CGSize(width: 1125, height: 2436).equalTo((UIScreen.main.currentMode?.size)!) : false)
我的理解就是這樣耳舅,如有錯誤之處,還望指出倚评,謝謝
參考地址如下:
IOS開發(fā)中常用一下方法