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);})

  • 相关阅读:
    py-day2-4 python 集合
    LR_问题_控制器不能使用定义的负载生成器
    LR_问题_无法使用LR的Controller,提示缺少license
    LR_问题_在导入wsdl时出现parsing error
    class, extends和super es6语法
    格式化日期
    CLR
    【sqlserver】批量插入10万数据
    php正则表达式匹配函数
    css overflow
  • 原文地址:https://www.cnblogs.com/FZP5/p/11155906.html
Copyright © 2011-2022 走看看