iOS iPhoneXR和全面屏iPad判断

释放双眼,带上耳机,听听看~!
今天遇到了一个用户反映的iPhoneXR屏幕app显示出现问题的情况,因为没有其他的XR用户反映(仅遇到这一例,无法复现),所以上网查了很多资料,最后发现iPhoneXR判断的一个问题,另附全面屏iPad判断方式,如下:
1、 iPhoneXR判断
iPhoneXR官方的适配尺寸是:828*1792,但实际真机运行时会遇到750*1624的情况,所以真正的判断宏是下面的样子



#define iPhoneXR ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(828,1792), [[UIScreen mainScreen] currentMode].size) || CGSizeEqualToSize(CGSizeMake(750,1624), [[UIScreen mainScreen] currentMode].size)) : NO)

 

2、 全面屏iPad判断

全面屏iPad目前包括11和12.9英寸两款,但由于iPad Pro也是12.9寸,仅通过屏幕尺寸判断的方式是不可行的。

第一种方式:

先通过判断设备型号是否包含iPad8,再结合屏幕尺寸判断

#define iPadX ([“当前设备型号” containsString:@"iPad8"] && ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(1668, 2388), [[UIScreen mainScreen] currentMode].size) || CGSizeEqualToSize(CGSizeMake(2048, 2732), [[UIScreen mainScreen] currentMode].size)) : NO))

第二种方式:

虽然用上述方法实现了全面屏iPad的判断,但其实还有一种简单实用的方法(借助iOS11之后新增的safeAreaInsets属性)

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

    CGFloat safeAreaBottom = [UIApplication sharedApplication].delegate.window.safeAreaInsets;

    if (!UIEdgeInsetsEqualToEdgeInsets(safeAreaBottom, UIEdgeInsetsZero) && 当前设备为iPad) {

      // 当前设备为全面屏iPad

    }

}

 

 

人已赞赏
iOS文章

iOS 自定义titleView的宽度

2019-12-23 14:20:21

iOS文章

iOS TableVIew获取屏幕中间的cell

2019-12-23 14:52:18

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索