iPhoneX的适配

之前停了一段时间iOS,去做小程序。今天又继续开发iOS。今天做的事情主要是适配iPhoneX,因为后面提交的版本必须适配iPhone X,否则不让上架。

粗看项目,我大概发现了几点需要适配的地方:

  1. tableView的头视图和尾视图高度错误
  2. tableView向下偏移了一定距离
  3. tabBar高度不对
  4. 导航条和状态栏高度不对,导航条上的视图位置不对。
  5. 视图中没有导航条的时候,顶部视图的位置不对。

下面一一解决上述问题

  1. 解决这个问题前,先看一下:通过英文可以知道,设置为0可以关闭自动估算高度。所以:self.estimatedSectionHeaderHeight = 0self.estimatedSectionFooterHeight = 0;通过这两行代码关闭头视图和尾视图的自动估算行高。PS:如果不需要头视图和位示图的高度,代理方法heightForHeaderInSection以及heightForFooterInSection 不能返回0,可以返回0.1。
  2. 不止tableView会向下偏移,所以继承自scrollView及其子类的都会向下偏移。因为UIView及其子类都遵循UIAppearance协议,所以我们可以进行全局配置:

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

     [[UIScrollViewappearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];

        }


  3. iPhone X的tabBar高度为83,可以通过宏定义的方式适配iPhone X:

    #define TabBar_HEIGHT (IPHONEX?83:49)


  4. iPhone X的状态栏高度为44,比之前多了24,原因你懂的。也是可以通过设置宏定义的方式:

    #define STATUS_BAR_H   (IPHONEX?44:20)


  5. 出现问题的原因还是因为状态栏高度变为44导致顶部条的高度增加,所以要把顶部视图的top约束增加24.

PS:我这样的解决方案,基础是约束搭建得当,而且宏定义使用得当。约束搭建得当指的是,顶部视图我只要适配top约束,下面都会适配好。宏定义使用得当,指的是给view设置约束的时候使用宏定义,不直接用数值。这样适配X的时候只要把宏定义改改就好。

       我的这套方案只是适合自己的项目,如果发现其他问题我这没有指出的,可以再google。适配iPhone X挺简单的。

       后续如果再发现问题,我会及时来更新。如果写的有错误的地方,希望看到这篇博文的童鞋指出。





猜你喜欢

转载自blog.csdn.net/oik_ios/article/details/79558493