iPhoneXs iPhoneXs Max iPhoneXr 新机发布需要适配吗?关于[[UIScreen mainScreen] bounds]和[[UIScreen mainScreen] ...

今天查看公司项目,发现在新机型上UI有问题,追根溯源是宏定义iPhoneX判断问题。

特地查看自已以往开发关于iPhoneX的判断,发现[[UIScreen mainScreen] bounds]和[[UIScreen mainScreen] currentMode]的区别。

所以打印查看,在此做一下记录。

以下均已截图展示,代码最后贴出。

本人常用的几处宏定义,如图;(去年出新机做的宏定义,bounds获取宽高)

iPhoneXs iPhoneXs Max iPhoneXr 新机发布需要适配吗?关于[[UIScreen mainScreen] bounds]和[[UIScreen mainScreen] ..._第1张图片
宽高,几种栏高度宏


iPhoneXs iPhoneXs Max iPhoneXr 新机发布需要适配吗?关于[[UIScreen mainScreen] bounds]和[[UIScreen mainScreen] ..._第2张图片
打印验证代码

打印结果,一看便知:(currentModeSize和boundsSize在此没有打印,有兴趣的可以自行尝试)

iPhone XR
iPhoneXs iPhoneXs Max iPhoneXr 新机发布需要适配吗?关于[[UIScreen mainScreen] bounds]和[[UIScreen mainScreen] ..._第3张图片
iPhone XS
iPhoneXs iPhoneXs Max iPhoneXr 新机发布需要适配吗?关于[[UIScreen mainScreen] bounds]和[[UIScreen mainScreen] ..._第4张图片
iPhone XSM
iPhoneXs iPhoneXs Max iPhoneXr 新机发布需要适配吗?关于[[UIScreen mainScreen] bounds]和[[UIScreen mainScreen] ..._第5张图片
iPhone 8p


综上,如果你用的是bounds方法,那恭喜你不用在做适配,

currentMode方法,那就,,,


两者区别,本人没有查找相关文件术语,仅从打印结果看,currentMode主要是分辨率,所以几种机型不太一致。

(自行查看相关说明吧。。。。。)


转载请注明出处。谢谢!





附代码:

宏定义:

#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)



打印:

if (IPHONE_X) {

        DLog(@"IPHONE_X");

    }else{

        DLog(@"其他");

    }

    DLog(@"状态栏H:%f",StatusbarHeight);

    DLog(@"导航栏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);

你可能感兴趣的:(iPhoneXs iPhoneXs Max iPhoneXr 新机发布需要适配吗?关于[[UIScreen mainScreen] bounds]和[[UIScreen mainScreen] ...)