X系列适配

作者: 鄂北 | 来源:发表于2018-10-09 14:57 被阅读3次

    X系列已经出来一个多月了,相信大家都在考虑做X系列的适配了。
    X系列相对于以前的版本的iPhone主要是多了个刘海,顶部导航栏部分高度由原来的64(状态栏20+44)变为88(状态栏44+44)。想对X系列做适配,最主要是判断iPhone是否属于X系列的,那怎么去判断呢?
    X系列底部有34的安全距离,用来满足X的手势操作,而非X系列的没有这个安全距离,那么可以根据是否有安全距离来判断是否为X系列。下面奉献上判断的代码(代码是写在pch文件中)

    #define APP ((AppDelegate *)[[UIApplication sharedApplication] delegate])
    
    /**
     * 判断机型
     */
    #define IPHONE_X isIphoneX()
    //内联函数
    static inline BOOL isIphoneX(){
        BOOL iphoneX = NO;
        // 先判断设备是否是iphone/ipod
        if (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPhone) {
            return iphoneX;
        }
        
        if (@available(iOS 11.0, *)) {
            // 利用safeAreaInsets.bottom > 0.0来判断是否是X系列
            if (APP.window.safeAreaInsets.bottom > 0.0) {
                iphoneX = YES;
            }
        }
        return iphoneX;
    }
    

    X系列判断出来了,那么就可以根据自己的具体需求去做适配了。但是大家肯定是希望各个控件能根据屏幕大小而去改变大小,怎么办呢?UI肯定会给你一个屏幕的大小的设计图让你去根据设计图去画界面,但是其他的屏幕大小怎么办呢,不可能每个屏幕大小都做一套适配吧,这不现实,耗时耗力,代码臃肿还不利于维护。我们可以根据UI给的设计图去设计屏幕比例,然后根据这个比例来缩放。例如UI给的是iPhone 6大小的设计图:

    /*屏幕宽高*/
    #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
    
    #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
    
    #define kScaleH (SCREEN_HEIGHT/667.0)
    #define kScaleW (SCREEN_WIDTH/375.0)
    

    667和375就是iPhone 6的高和宽。
    控件的大小就可以根据kScaleH,kScaleW比例来缩放了。
    控件大小缩放了,当然也希望字体大小也能相应的改变大小。根据小编的测试屏幕宽为375的用原大小,不是375的就加大一号,因为现在做适配都是从iPhone 6开始了,375是iPhone 6的宽度,是所有适配iPhone最小的宽度了,所以以375来做基准。

    /*自定义字体大小*/
    #define kCustomFont(size) [UIFont systemFontOfSize:FontSize(size)]
    //内联函数
    static inline CGFloat FontSize(CGFloat fontSize){
        if (SCREEN_WIDTH == 375) {
            return fontSize;
        }else{
            return fontSize+1;
        }
    }
    

    以后设置字体大小时直接调用kCustomFont方法就好。例如

        UILabel * label = [[UILabel alloc] init];
        label.textColor = [UIColor whiteColor];
        label.textAlignment = NSTextAlignmentCenter;
        label.font = kCustomFont(26);
        [self.view addSubview:label];
    

    小编适配X系列就这些了!

    相关文章

      网友评论

        本文标题:X系列适配

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