今天查看公司項目,發(fā)現(xiàn)在新機型上UI有問題,追根溯源是宏定義iPhoneX判斷問題。
特地查看自已以往開發(fā)關(guān)于iPhoneX的判斷,發(fā)現(xiàn)[[UIScreen mainScreen] bounds]和[[UIScreen mainScreen] currentMode]的區(qū)別。
所以打印查看,在此做一下記錄。
以下均已截圖展示,代碼最后貼出。
本人常用的幾處宏定義,如圖;(去年出新機做的宏定義,bounds獲取寬高)


打印結(jié)果,一看便知:(currentModeSize和boundsSize在此沒有打印,有興趣的可以自行嘗試)




綜上,如果你用的是bounds方法,那恭喜你不用在做適配,
currentMode方法,那就,,,
兩者區(qū)別,本人沒有查找相關(guān)文件術(shù)語,僅從打印結(jié)果看,currentMode主要是分辨率,所以幾種機型不太一致。
(自行查看相關(guān)說明吧。。。。。)
轉(zhuǎn)載請注明出處。謝謝!
附代碼:
宏定義:
#define SCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height
#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width
#define IPHONE_X ([UIScreen instancesRespondToSelector:@selector(bounds)] ? CGSizeEqualToSize(CGSizeMake(375, 812), [[UIScreen mainScreen] bounds].size) : NO)
#define StatusbarHeight [[UIApplication sharedApplication] statusBarFrame].size.height
#define StatusNavigationbarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height + 44)
#define TabbarHeight (([UIScreen instancesRespondToSelector:@selector(bounds)] ? CGSizeEqualToSize(CGSizeMake(375, 812), [[UIScreen mainScreen] bounds].size) : NO)? 49+34 : 49)
打?。?/p>
if (IPHONE_X) {
? ? ? ? DLog(@"IPHONE_X");
? ? }else{
? ? ? ? DLog(@"其他");
? ? }
? ? DLog(@"狀態(tài)欄H:%f",StatusbarHeight);
? ? DLog(@"導(dǎo)航欄H:%f",StatusNavigationbarHeight);
? ? DLog(@"底部欄H:%d",TabbarHeight);
? ? DLog(@"W:%f,H:%f",SCREEN_WIDTH,SCREEN_HEIGHT);
? ? DLog(@"寬高比:%f",SCREEN_WIDTH/SCREEN_HEIGHT);
下面是為了比較currentMode和bounds卻別,
? ? CGSize currentModeSize = [[UIScreen mainScreen] currentMode].size;
? ? DLog(@"currentMode:W:%f,H:%f",currentModeSize.width,currentModeSize.height);
? ? CGSize boundsSize = [[UIScreen mainScreen] bounds].size;
? ? DLog(@"bounds:W:%f,H:%f",boundsSize.width,boundsSize.height);