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系列适配

    X系列已经出来一个多月了,相信大家都在考虑做X系列的适配了。X系列相对于以前的版本的iPhone主要是多了个刘海,...

  • 适配iPhone XR/iPhone XS Max

    iPhone X系列屏幕相关信息: 1.启动图适配:iPhone XR:828px x 1792pxiPhone ...

  • iPonex系列适配

    iPhone X系列屏幕相关信息: 1.启动图适配:iPhone XR:828px x 1792pxiPhone ...

  • iPhone X系列适配

    iPhone尺寸 iPhone X系列都有一个共同的特点,就是“齐刘海”+底部触摸条 针对这种样式的屏幕,我们处理...

  • iPhone X系列适配

    鉴于iPhone X/XS/XR/XS Max底部都会有安全距离,所以可以利用 safeAreaInsets.b...

  • tez 0.9.2 编译适配 hadoop 3.2.1

    tez的编译真的是无数坑,官方只适配了2.7.2的系列,要适配3.x系列的编译,很多依赖要自己升级。 编译环境为c...

  • iPhone X 适配 ( iOS 11适配 ) 打理刘海

    iPhone X 适配 ( iOS 11适配 ) 打理刘海 iPhone X 适配 ( iOS 11适配 ) 打理刘海

  • iPhone X的简单适配

    iPhone X的简单适配 iPhone X的简单适配

  • iPhone X适配

    适配iPhone x 底栏高度(83:49) 适配iPhone x 状态栏高度(44:20) 适配iPhone x...

  • 贝聊 iPhone X 适配实战

    贝聊 iPhone X 适配实战 贝聊 iPhone X 适配实战

网友评论

    本文标题:X系列适配

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