关于iPhone适配的问题

2018-10-29  本文已影响0人  耽于幽夜

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;

}

上一篇下一篇

猜你喜欢

热点阅读