iOS如何判断是否是iPhone X,iPhone XS Max,iPhone XR 设备

最近发现一个项目的一个适配问题,当时是简单的适配了一下iPhone X,导致的结果就是当前的app在iPhone XR的情况下界面异常。

最初的判断逻辑:

#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)

仅仅采取mode的size大小来判断。

结果iPhone XR 是:


iPhone X 各个屏幕比例

很明显上述最初的逻辑只考虑了iPhone X ,未考虑到其他机型。

如果后续再出新的设备,是否判断方法一直有问题。所以今天研究出新方法已被一劳永逸:

方法一:采取新的系统方法 safeAreaInsets;

var iPhoneX : Bool {if#available(iOS 11, *) {iflet w =UIApplication.shared.delegate?.window, let window = w, window.safeAreaInsets.left >0|| window.safeAreaInsets.bottom >0{returntrue} }returnfalse}

// 方法二   刘海屏的设计模式

let iPhoneX =UIApplication.shared.statusBarFrame.height >=44


总结:iPhone x 系列产品,其实应该来自于根因,新的界面必带来的新的方法。上述是否话可以新增一个是否满足faceID,是否也可以作为新的判断。上述方法,供大家参考。

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

推荐阅读更多精彩内容