iOS 11 & iPhone X 适配资料集
本文主要简单谈谈并收集一些关于 iOS 11 & iPhone X 的适配及设计指南。
iPhone X
众所周知,iPhone X 屏幕与其他的 iPhone 设备均不同,苹果称 iPhone X 的屏幕为超级视网膜显示屏。
- 在 iPhone X 上 1pt 相当于 3x3 px,也就是我们常说的 @3x,同 Plus 机型。

- iPhone X 的屏幕尺寸为 375x812 pt(即 1125×2436 pix)。iPhone X 比 4.7 寸机型屏幕多出 145 pt。

- 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。

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

有导航栏时
在 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。

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

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

机型尺寸


定位相关
在 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。
资料集
- iPhone X HIG
- Adaptivity & Layout
- Image size & Resolution
- WWDC17: What's New in Location Technologies ?
- Designing for iPhone X
- Building Apps for iPhone X
- 关于iPhone X 的适配
- iOS11 & iPhone X 适配指南
- 你可能需要为你的 APP 适配 iOS 11
- 适配iOS11,适配iPhoneX,适配安全区的几个文章和宏
- 为 iOS 11 适配工具栏(UIToolBar)
- 简书 App 适配 iOS 11
- iOS 安全区域适配总结
- Update Apps for iPhone X
- 手管 iPhone X 的适配总结
iOS 11 & iPhone X 适配资料集的更多相关文章
- 适配 iOS 11 & iPhone X 大全
1.升级iOS11后造成的变化 1. 1升级后,发现某个拥有tableView的界面错乱,组间距和contentInset错乱,因为iOS11中UIViewController的automatical ...
- 《iOS 11 安全区域适配总结》
本文来自于腾讯Bugly公众号(weixinBugly),作者:sonialiu,未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/W1_0VrchCO50owhJ ...
- iOS 11 安全区域适配
//解决iOS11,仅实现heightForHeaderInSection,没有实现viewForHeaderInSection方法时,section间距大的问题 [UITableView appea ...
- IOS学习——iphone X的适配
说实话,对于一个刚入门iOS两个月的新手而言,在拿到这个任务的时候整个人都是懵逼的,怎么做适配?哪些地方需要适配?该怎么做?一个个问题搞得头都大了. 首先,啥都不管,先在iPhone X上运行起来看看 ...
- 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践
一.前言 前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了.不得不说,新系统和新机型的发布确实 ...
- iOS 11适配
1.http://www.cocoachina.com/ios/20170915/20580.html 简书App适配iOS 11 2.http://www.jianshu.com/p/efb ...
- iOS 11和xcode9
最近发现了比较奇怪的问题,就是 ios10.几以前的版本,用xcode9 编写的程序 如果程序写的table是 plain的 ,那么 在 ios10.几及以下版本都会显示成group样式, ...
- iOS 11更新后以及iPhone X推出后工程中遇到的问题及适配
1.UITableView滑动时右侧的滑动条忽长忽短的乱跳以及MJRefresh上拉刷新死循环 这是因为tableView在iOS11默认使用Self-Sizing,tableView的estimat ...
- iPhone X 适配 ( iOS 11适配 )
总结: 1.状态栏高度发生变化,解决方案:布局的时候这个高度不要写死,通过方法获取高度. 2.导航栏的视图层级结构发生变化而导致 UI(titleView.UIBarButtonItem) 问题. 3 ...
随机推荐
- 【java】关于java类和对象,你想知道的在这里!
java类的基本组成 java作为一门面向对象的语言, 类和对象是最重要的概念之一,下面,就让我们来看看java中类的基本结构是怎样的: 一个简单的java类主要可由以下几个部分(要素)组成: 1.实 ...
- Swing-布局管理器之BorderLayout(边界布局)-入门
注:本文内容基本源于Java图形化界面设计——布局管理器之BorderLayout(边界布局),笔者学习过程中根据自身理解进行少量编辑. 边界布局管理器(BorderLayout)把容器的的布局分为五 ...
- 201521123089 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 总结: (1)类名的首字母一定要大写. (2)制类型转换:类强制转换为子类时只有当引用类型真 ...
- 201521123035《Java程序设计》第一周学习总结
1.本周学习总结 本周学习了Java从诞生到如今的部分历史,并通过了老师的课堂演示了解了Java在cmd中的编译过程.然后还学习了JDK,JRE,JVM. 2. 书面作业 1.为什么java程序可以 ...
- 201521123010 《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 常用异常: ①题目5-1 1.1 截图你的提交结果(出现学号) A: 1.2 ...
- 201521123104 《Java程序设计》 第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 1. finally(题目4-2) 1.1 截图你的提交结果(出现学号) 1.2 4-2中f ...
- 从instr中截取第一个delimiter之前的内容放到outstr中,返回第一个delimiter之后的位置
从instr中截取第一个delimiter之前的内容放到outstr中,返回第一个delimiter之后的位置 char *msstrtok(char *instr, char *outstr, ch ...
- javascript面向对象编程笔记
对象:一切事物皆是对象.对象是一个整体,对外提供一些操作.比如说一个收音机是一个对象,我们不需要知道它的内部结构是什么,只需要会使用外部的按钮就可以使用收音机. 面向对象:面向对象语言的标志是他们都有 ...
- “.Net 社区大会”(dotnetConf) 2017 Day 1 Keynote: .NET Everywhere
8月份已经发布了.NET Core 2.0, 大会Keynote 一开始花了大量的篇幅回顾.NET Core 2.0的发布,社区的参与度已经非常高.大会的主题是.NET 无处不在: NET Core ...
- 06jQuery-04-DOM操作
jQuery既然是为了帮助你能从js的繁琐中解脱出来,自然在DOM操作上也有自己的一套. 1.修改Text和HTML 之前我们提到过,如果用JS的话,你要修改Text或者HTML需要用到其innerH ...