zoukankan      html  css  js  c++  java
  • 判断iPhoneX适配问题

    最近在公司没事运行了之前写的一个项目,发现在iphonexs max上有问题,发现是我的刘海屏判断有问题,

    错误示例1:

    #define AskStatusBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height)

    #define Ask_IPHONE_X (kStatusBarHeight >= 44.0f)

    错误示例2:

    //判断iPhoneX

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

    //判断iPHoneXr

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

    //判断iPhoneXs

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

    //判断iPhoneXs Max

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

    #define IS_IPHONE_XSR ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ? YES : NO)

    现在看看之前写的好蠢,后来发现在iOS11后更新了一个新方法:safeAreaInsets,然后又重新根据这个方法在网上找到了一个判断iOS 刘海平手机的方案:

    #define IPHONE_X (@available(iOS 11.0, *) ? [[[UIApplication sharedApplication] delegate] window].safeAreaInsets.bottom > 0.0 : NO )

    结果发现这样调用会报警告。

    正确的方案如下:

    #define IPHONE_X 

    ({BOOL isPhoneX = NO;

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

    isPhoneX = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0;

    }

    (isPhoneX);})

  • 相关阅读:
    Yuan先生的博客网址
    Django的认证系统 auth模块
    Django 中间件使用
    Django Form表单验证
    Django ORM介绍 和字段及字段参数
    ajax 使用
    Java报表之JFreeChart
    POI
    MyBatis
    问题解决方法
  • 原文地址:https://www.cnblogs.com/FZP5/p/11155906.html
Copyright © 2011-2022 走看看