美文网首页iOS
iOS 12 iPhoneXr、iPhoneXs、iPhone

iOS 12 iPhoneXr、iPhoneXs、iPhone

作者: 某天天 | 来源:发表于2018-10-10 10:55 被阅读191次

    分辨率:

    iPhoneX :2436 * 1125 || pt: 812 * 375
    iPhoneXr:1792 * 828 || pt: 896 * 414
    iPhoneXs:2436 * 1125 || pt: 812 * 375
    iPhoneXs Max:2688 * 1242 || pt: 896 * 414

    适配:

    iPhoneXs 的屏幕尺寸和iPhoneX是一样的,所以不需要做特殊处理,只需要处理适配iPhoneXriPhoneXs Max
    由于navBartabBar的高度和iPhoneX是一样的,所以适配只需要在原来判断iPhoneX的基础上加上iPhoneXriPhoneXs Max的机型判断就好了。

    //判断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)
    
    //iPhoneX系列
    #define Height_StatusBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ? 44.0 : 20.0)
    #define Height_NavBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ? 88.0 : 64.0)
    #define Height_TabBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ? 83.0 : 49.0)
    
    一些三方库里面判断iPhoneX基础上添加iPhoneXr、iPhoneXs、iPhoneXs Max的判断:
    + (BOOL)isIphoneX {
        struct utsname systemInfo;
        uname(&systemInfo);
        NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
        if ([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"]) {
            // judgment by height when in simulators
            return ((CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(375, 812)) ||
                     CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(812, 375))) || CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(414, 896)) ||
                    CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(896, 414)));
        }
        BOOL isIPhoneX = [platform isEqualToString:@"iPhone10,3"] || [platform isEqualToString:@"iPhone10,6"] || [platform isEqualToString:@"iPhone11,2"] || [platform isEqualToString:@"iPhone11,4"] || [platform isEqualToString:@"iPhone11,6"] || [platform isEqualToString:@"iPhone11,8"];
        return isIPhoneX;
    }
    

    相关文章

      网友评论

        本文标题:iOS 12 iPhoneXr、iPhoneXs、iPhone

        本文链接:https://www.haomeiwen.com/subject/dwqpaftx.html