iOS 11 & iPhone X 适配资料集

3,258 阅读3分钟
原文链接: www.jianshu.com

本文主要简单谈谈并收集一些关于 iOS 11 & iPhone X 的适配及设计指南。

iPhone X

众所周知,iPhone X 屏幕与其他的 iPhone 设备均不同,苹果称 iPhone X 的屏幕为超级视网膜显示屏。

  • 在 iPhone X 上 1pt 相当于 3x3 px,也就是我们常说的 @3x,同 Plus 机型。
scale-3-pix-vs
scale-3-pix-vs
  • iPhone X 的屏幕尺寸为 375x812 pt(即 1125×2436 pix)。iPhone X 比 4.7 寸机型屏幕多出 145 pt。
iphone-x-vs-iphone
iphone-x-vs-iphone
  • iPhone X 最引人注意的就是它的屏幕,没错...带刘海的屏幕。至于适配问题,本文不做过多解说,本文末尾会给出相关资料。

Don't mask or call special attention to key display features. Don't attempt to hide the device's rounded corners, sensor housing, or indicator for accessing the Home screen by placing black bars at the top and bottom of the screen. Don't use visual adornments like brackets, bezels, shapes, or instructional text to call special attention to these areas either.

注意:根据 Human Interface Guidelines for iPhone X 规范,不要试图去隐藏屏幕的圆角、刘海等。前段时间 GitHub 上小火了一个 Swift 库 NotchKit,专门用于隐藏 iPhone X 的刘海。笔者建议先别急着集成公司项目,这种做法可能会被苹果拒绝(违反了 HIG 条例),不过小伙们可以集成至个人项目提交审核试试。

安全区域(SafeArea)

无导航栏时

竖屏

竖屏情况下并且无导航栏时,上下安全边距分别为 44pt/34pt,即安全区域宽高为 375pt/734pt。

iphone-x-portrait
iphone-x-portrait

横屏

横屏情况下并且无导航栏时,上下安全边距分别为 0pt/21pt,左右安全边距为 44pt/44pt,即安全区域宽高为 724pt/354pt。

iphone-x-landscape
iphone-x-landscape

有导航栏时

在 iOS 11 中导航栏有个新特性 —— 大标题,直接上代码:

Objective-C:


if (@available(iOS 11.0, *)) {
    self.navigationController.navigationBar.prefersLargeTitles = YES;
    self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;
}

Swift:

        
if #available(iOS 11.0, *) {
    navigationController?.navigationBar.prefersLargeTitles = largeTitle
    navigationController?.navigationItem.largeTitleDisplayMode = .automatic
}

竖屏

当没有开启大标题且有导航栏时,上下安全边距分别为 88pt/34pt,即安全区域宽高为 375pt/690pt。

iphone-x-portrait-nav-title
iphone-x-portrait-nav-title

开启大标题时,上下安全边距分别为 140pt/34pt,即安全区域宽高为 375pt/638pt。

iphone-x-portrait-nav-large-title
iphone-x-portrait-nav-large-title

横屏

不管有没有开启大标题,横盘状态下一样,上下安全边距分别为 32pt/21pt,左右安全边距为 44pt/44pt,即安全区域宽高为 724pt/322pt。

iphone-x-landscape-nav-title
iphone-x-landscape-nav-title

机型尺寸

iphone-portrait-landscape-dimensions
iphone-portrait-landscape-dimensions
iphone-scale-factor
iphone-scale-factor

定位相关

在 iOS 11 中必须支持 When In Use 授权模式(NSLocationWhenInUseUsageDescription),在 iOS 11 中,为了避免开发者只提供请求 Always 授权模式这种情况,加入此限制,如果不提供When In Use 授权模式,那么 Always 相关授权模式也无法正常使用。

如果要支持老版本,即 iOS 11 以下系统版本,那么建议在 info.plist 中配置所有的 Key(即使 NSLocationAlwaysUsageDescription 在 iOS 11及以上版本不再使用):

  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysAndWhenInUseUsageDescription
  • NSLocationAlwaysUsageDescription

NSLocationAlwaysAndWhenInUseUsageDescription 为 iOS 11 中新引入的一个 Key。

资料集

  1. iPhone X HIG
  2. Adaptivity & Layout
  3. Image size & Resolution
  4. WWDC17: What's New in Location Technologies ?
  5. Designing for iPhone X
  6. Building Apps for iPhone X
  7. 关于iPhone X 的适配
  8. iOS11 & iPhone X 适配指南
  9. 你可能需要为你的 APP 适配 iOS 11
  10. 适配iOS11,适配iPhoneX,适配安全区的几个文章和宏
  11. 为 iOS 11 适配工具栏(UIToolBar)
  12. 简书 App 适配 iOS 11
  13. iOS 安全区域适配总结