关于iPhone适配的问题

iPhone X出来后,由于“刘海”的问题,给开发者门带来的一个麻烦就是屏幕的适配;现在iPhone X系列也出来了,又要进行一次适配。大部分人还是选择利用屏幕的尺寸或像素来进行适配如:

define IPHONE_IS_X ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) && !UI_IS_IPAD : NO)

define IPHONE_IS_XR ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) && !UI_IS_IPAD : NO)

define IPHONE_IS_XS_MAX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) && !UI_IS_IPAD : NO)

本人觉得利用这些来判断比较麻烦,因为iPhone X系列都有一个相同点,就是iOS11以后出来的安全区特性,因此我们可以根据这一特性来进行屏幕的适配

define IPHONE_IS_X_ALL safeAreaInsets().bottom>0?YES:NO

UIEdgeInsets safeAreaInsets(void) {

UIEdgeInsets safeAreaInsets = UIEdgeInsetsZero;

if (@available(iOS 11.0, *)) {

    safeAreaInsets = [[[[UIApplication sharedApplication] delegate]window]safeAreaInsets];

}

return safeAreaInsets;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容