iOS新手学习iOS 适配iOS开发技术

兼容 - 纯代码完美适配 iPhoneX

2018-01-05  本文已影响2017人  進无尽

前言

本文主要针对适配 iPhoneX列出一些关键点,仔细阅读可完美适配 iPhoneX,其中还有一些是适配 iOS11的, 话不多少,开始正餐。

iPhoneX概况一览

从图中我们可以看出:

status bar 从20 变成了 44
导航条高度依然是 44
顶部的总体高度变成 88
安全区域距离页面底部需要保留 34pt,系统自带的 Tabbar已经适配好了,但是自己的页面书写代码就要注意了,以前可以触底的,现在要保留34pt 距离了。

没有适配 iPhoneX的触底页面

旧工程如何在iphoneX全屏显示

只需要在LaunchImage中添加一个尺寸为1125 × 2436的启动图,并且工程使用LaunchImage加载启动图的,而不是使用 LaunchImage.storeBorad.

portrait是人像模式,也就是竖屏。landscape是风景模式,也就是横屏

看一下各种iPhone尺寸屏幕的分辨率和宽高比

设备 屏幕尺寸 分辨率(pt) Reader 分辨率(px) 宽高比
iPhone 3GS 3.5吋 320x480 @1x 320x480 0.666
iPhone 4/4s 3.5吋 320x480 @2x 640x960 0.666
iPhone 5/5s/5c 4.0吋 320x568 @2x 640x1136 0.563
iPhone 6、7、8 4.7吋 375x667 @2x 750x1334 0.562
iPhone 6Plus、 7Plus、 8Plus 5.5吋 414x736 @3x 1242x2208 0.5625
iPhoneX 5.8吋 375x812 @3x 1125 × 2436 0.4618

如何做到完美适配,使图片等内容不变形呢?
不做处理的话, iponeX上会出现变形,我们以宽的缩放比为正比缩放比,这样不管以后屏幕高度如何变化,都不会出现变形的情形。

#define NEWX                     [UIScreen mainScreen].bounds.size.width/375
#define NEWY                     NEWX

iPhone X 变化最大的是头部 & 底部

 非iPhone X :
 StatusBar 高20px,NavigationBar 高44px,底部TabBar高49px
iPhone X:
StatusBar 高44px,NavigationBar 高44px,底部TabBar高83px

所以,之前项目里写死的 ±49 ±64 都要出问题,下面几个宏挺管用的

  #define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height
  #define kNavBarHeight 44.0
  //注意:请直接获取系统的tabbar高度,若没有用系统tabbar,建议判断屏幕高度;之前判断  状态栏高度的方法不妥,如果正在通话状态栏会变高,导致判断异常,下面只是一个例子,请勿直接使用!
  #define kTopHeight (kStatusBarHeight + kNavBarHeight)

适配中遇到的其他问题

自己项目的适配效果


值得注意的是:我这个项目中使用的是系统自带的导航栏、Tabbar。
上一篇下一篇

猜你喜欢

热点阅读