适配与布局

人们通常希望能够在其所有设备和任何情境中,使用他们喜爱的应用。在 iOS 中,界面元素和布局可以在不同设备上,通过自动改变形状和大小去进行适配,iPad 上的多任务处理、拆分视图、屏幕旋转等。设计一个在任何环境下都能提供出色体验的适配性强的界面,是非常重要的。

设备屏幕大小和方向

iOS 设备有多种屏幕尺寸,可用于纵向或横向。

屏幕快照 2019-10-03 00.52.09.png

设备 竖屏尺寸 横屏尺寸
12.9” iPad Pro 2048px × 2732px 2732px × 2048px
11” iPad Pro 1668px × 2388px 2388px × 1668px
10.5” iPad Pro 1668px × 2224px 2224px × 1668px
9.7” iPad 1536px × 2048px 2048px × 1536px
7.9” iPad mini 4 1536px × 2048px 2048px × 1536px
iPhone XS Max 1242px × 2688px 2688px × 1242px
iPhone XS 1125px × 2436px 2436px × 1125px
iPhone XR 828px × 1792px 1792px × 828px
iPhone X 1125px × 2436px 2436px × 1125px
iPhone 8 Plus 1242px × 2208px 2208px × 1242px
iPhone 8 750px × 1334px 1334px × 750px
iPhone 7 Plus 1242px × 2208px 2208px × 1242px
iPhone 7 750px × 1334px 1334px × 750px
iPhone 6s Plus 1242px × 2208px 2208px × 1242px
iPhone 6s 750px × 1334px 1334px × 750px
iPhone SE 640px × 1136px 1136px × 640px

了解屏幕分辨率如何影响应用的图像,请参阅图像大小和分辨率。

自动布局

自动布局是构建自适应界面的开发工具。使用「自动布局」,可以定义控制内容的规则(称为约束)。例如,你可以约束按钮,使其始终水平居中,并将按钮定位在图像下方八个点,而不考虑可用的屏幕空间。

屏幕快照 2019-10-03 00.57.21.png

当检测到环境差异(称为特征)时,「自动布局」会根据指定的约束自动调整布局。你可以将应用设置为动态适应各种特征,包括:

有关开发人员指南,请参阅自动布局指南UITraitCollection

布局指南和安全区域

布局指南定义了一些矩形区域,这些区域实际上不会明显显示在屏幕上,但有助于内容的定位、对齐和间距。该系统包括预定义的布局指南,便于在内容周围应用标准边距,并限制文本宽度以实现最佳可读性。你还可以定义自定义布局指南。

iPhone
屏幕快照 2019-10-03 01.06.56.png

iPad
屏幕快照 2019-10-03 01.07.53.png

遵守 UIKit 定义的安全区域和布局边距。这些布局指南可确保内容根据设备和情境进行正确的嵌入。安全区域还可以防止内容在状态栏、导航栏、工具栏和选项卡栏等位置发生重叠。系统提供的标准视图会自动采用安全区布局指南。

有关开发人员指南,请参阅 UILayoutGuidelayoutMarginsGuidereadableContentGuidesafeAreaLayoutGuide

尺寸类型

尺寸类型是根据其大小自动分配给内容区域的特征。系统定义了两个尺寸类型,「常规」(表示广阔的空间)和「紧凑」(表示约束空间),它们描述视图的高度和宽度。

视图可能拥有任意组合的尺寸类型:

  • 常规宽度,常规高度
  • 紧凑宽度,紧凑高度
  • 常规宽度,紧凑高度
  • 紧凑宽度,常规高度

与其他环境变化一样,iOS 会根据内容区域的尺寸类型动态调整布局。例如,垂直尺寸类型从紧凑高度更改为常规高度,可能是因为用户将设备从横向旋转到纵向,选项卡栏可能会变高。

设备尺寸类型

根据屏幕大小,不同尺寸类型结合适用于不同设备上的全屏体验。

Diagram of an iPad and an iPhone in both portrait and landscape orient.svg

设备 纵向 横向
12.9” iPad Pro 常规宽度,常规高度 常规宽度,常规高度
11” iPad Pro 常规宽度,常规高度 常规宽度,常规高度
10.5” iPad Pro 常规宽度,常规高度 常规宽度,常规高度
9.7” iPad 常规宽度,常规高度 常规宽度,常规高度
7.9” iPad mini 4 常规宽度,常规高度 常规宽度,常规高度
iPhone XS Max 紧凑宽度,常规高度 常规宽度,紧凑高度
iPhone XS 紧凑宽度,常规高度 紧凑宽度,紧凑高度
iPhone XR 紧凑宽度,常规高度 常规宽度,紧凑高度
iPhone X 紧凑宽度,常规高度 紧凑宽度,紧凑高度
iPhone 8 Plus 紧凑宽度,常规高度 常规宽度,紧凑高度
iPhone 8 紧凑宽度,常规高度 紧凑宽度,紧凑高度
iPhone 7 Plus 紧凑宽度,常规高度 常规宽度,紧凑高度
iPhone 7 紧凑宽度,常规高度 紧凑宽度,紧凑高度
iPhone 6s Plus 紧凑宽度,常规高度 常规宽度,紧凑高度
iPhone 6s 紧凑宽度,常规高度 紧凑宽度,紧凑高度
iPhone SE 紧凑宽度,常规高度 紧凑宽度,紧凑高度

多任务尺寸类型

在 iPad 上,尺寸类型同样适用于运行多任务的应用。

屏幕快照 2019-10-03 02.13.32.png

2/3 拆分视图 1/2 拆分视图 1/3 拆分视图

设备 模式 纵向 横向
12.9” iPad Pro 2/3 拆分视图 紧凑宽度,常规高度 常规宽度,常规高度
1/2 拆分视图 不适用 常规宽度,常规高度
1/3 拆分视图 紧凑宽度,常规高度 紧凑宽度,常规高度
11” iPad Pro 2/3 拆分视图 紧凑宽度,常规高度 常规宽度,常规高度
1/2 拆分视图 不适用 紧凑宽度,常规高度
1/3 拆分视图 紧凑宽度,常规高度 紧凑宽度,常规高度
10.5” iPad Pro 2/3 拆分视图 紧凑宽度,常规高度 常规宽度,常规高度
1/2 拆分视图 不适用 紧凑宽度,常规高度
1/3 拆分视图 紧凑宽度,常规高度 紧凑宽度,常规高度
9.7” iPad 2/3 拆分视图 紧凑宽度,常规高度 常规宽度,常规高度
1/2 拆分视图 不适用 紧凑宽度,常规高度
1/3 拆分视图 紧凑宽度,常规高度 紧凑宽度,常规高度
7.9” iPad mini 4 2/3 拆分视图 紧凑宽度,常规高度 常规宽度,常规高度
1/2 拆分视图 不适用 紧凑宽度,常规高度
1/3 拆分视图 紧凑宽度,常规高度 紧凑宽度,常规高度

通用布局注意事项

确保主要内容在其默认大小下显示清晰。除非人们选择更改大小,否则不应当使用水平滚动来阅读重要文本,或通过缩放以查看主要图像。

在整个应用中保持整体一致的样式。通常,具有类似功能的元素应该看起来类似。

使用视觉比重和平衡来传达重要性。吸引眼球的较大的项目,比较小看起来更显重要。较大的项目也更易于点击,当应用程序用于注意力分散的环境时(如在厨房或健身房),这一点尤其重要。通常,将主要项目放在屏幕的上半部分,在从左到右阅读环境中下,放置在屏幕左侧。

使用对齐来方便浏览,并传达组织和层次结构。对齐使应用看起来整洁有序,有助于人们在滚动时集中注意力,并更轻松地查找信息。缩进和对齐还可以指示内容组之间的关联方式。

如果可能,同时支持竖屏和横屏。人们更喜欢以不同方向使用应用,因此最好满足用户这一期望。

为修改文本大小做好准备。当人们在「设置」中选择不同的文本大小时,大多数应用都响应。要适应某些文本大小更改,你可能需要调整布局。有关应用中的文本使用的详细信息,请参阅版式

屏幕快照 2019-10-03 02.36.53.png

为交互元素提供足够大的触摸目标。对于所有控件,尝试保持 44pt x 44pt 的最小可点击区域。

屏幕快照 2019-10-03 02.38.57.png

在多个设备上预览应用。你可以使用「模拟器」(包含在 Xcode 中)来预览应用并检查剪裁和其他布局问题。如果应用支持横向模式,请确保无论设备是向左旋转还是向右旋转,布局都能看起来良好。全面屏 iPhone 不支持上下颠倒的纵向模式。某些功能(如广色域图像)最好在实际设备上预览。

在较大的设备上显示文本时,请使用高阅读性的边距。这些边距使文本行足够短,以确保舒适的阅读体验。

适应情境中的更改

当情境更改时,保持对当前内容的聚焦。内容是你的最高优先级。当情境变化时,改变焦点可能会令人迷惑和沮丧,并会使人感觉他们失去了对应用的控制。

避免不必要的布局更改。当用户旋转设备时,整个布局不必做更改。例如,如果应用在纵向模式下以网格形式呈现图像,则不必在横向模式下将相同的图像以列表的形式呈现。相反,它可能只是调整网格的尺寸。尝试在所有情境中保持类似的体验。

如果应用必须在单个方向上运行,请支持这两种变体。无论用户是向左旋转还是向右旋转设备,仅在横向模式下运行的应用都应可用。当用户将设备旋转 180 度时,仅在纵向模式下运行的应用应当将内容旋转 180 度,但 iPhone X 上除外,因为它不支持倒置的纵向模式。如果某人以错误的方向持有设备时,应用未自动旋转,他们会本能地知道要旋转设备,而你不需要告诉他们。

根据情境自定义应用对旋转的响应。例如,允许用户通过旋转设备来移动角色的游戏,在游戏过程中可能不应切换方向。但是,它可以根据当前方向显示菜单和简介序列。

确保你的应用可以在 iPad 上运行,而不仅仅是在 iPhone 上。用户喜欢在任一类型的 iOS 设备上灵活地使用你的应用。即使你希望大多数人在 iPhone 上使用你的应用,界面元素也应该在 iPad 上保持可见性和功能性。如果应用的某些功能需要基于 iPhone 的硬件(如 3D Touch),请考虑在 iPad 上隐藏或禁用这些功能,并允许用户使用应用的其他功能。

切片.png

在重复使用现存素材时,要注意长宽比的差异。不同的屏幕大小可能具有不同的纵横比,从而导致图像出现裁剪、信箱式留白(letterboxed)或邮筒式留白(pillarboxed)。确保在所有屏幕尺寸下都保留重要的视觉内容。

设计全屏的体验

扩展视觉元素以填充屏幕。确保背景延伸到屏幕的边缘,并且垂直可滚动的布局(如表格和集合)一直延伸到底部。

避免在屏幕底部和角落,明显地放置交互控件。人们会在屏幕底部边缘使用轻扫手势,来访问「主屏幕」、切换应用,这些手势可能会取消你在此区域中实现的自定义手势。屏幕的远角可能是人们难以舒适触达的区域。

屏幕快照 2019-10-03 03.14.27.png

嵌入基本内容以防止剪切。通常,内容应居中且对称地嵌入,以便它在任何方向上看起来都不错:不会被圆角剪切,不会被传感器外壳遮盖,不会被用于访问主屏幕的指示器遮盖。为获得最佳效果,请使用系统提供的标准界面元素和自动布局来搭建界面,并遵守 UIKit 定义的布局指南和安全区域。当设备处于横向时,某些应用(如游戏)可能适合在屏幕的下部放置可显示控件(延伸到安全区域下方),以留出更多内容空间。在屏幕顶部和底部放置控件时,请使用匹配的内嵌,并在「主屏幕」指示器周围留出足够的空间,这样人们在尝试与控件交互时不会意外瞄准它。由于「主屏幕」指示器在屏幕上保持居中,因此其相对于应用界面的位置可能会改变。

屏幕快照 2019-10-03 03.20.22.png

插入全屏宽的按钮。伸展到屏幕边沿的按钮可能看起来不像一个按钮。遵循标准 UI 控件中全屏宽按钮的面距。当一个位于屏幕底端的全屏宽按钮,具有圆角并且与安全区域底对齐时显示效果最佳,同时也保证了它不会与「主屏幕」指示器冲突。

不要隐藏或突出关键的显示特性。不要在屏幕顶部和底部放置黑条,来试图隐藏设备的圆角、传感器区域和主页指示器。也不要使用像括号(brackets)、边框(bezels)、形状(shapes)或指示文字这样的视觉装饰,来引导用户关注这些区域。

注意状态栏的高度。全面屏 iPhone 上的状态栏比旧版 iPhone 的高。如果应用假定将内容定位在状态栏下方的固定状态栏高度,则必须更新应用以根据用户的设备动态定位内容。请注意,当语音录制和位置跟踪等后台任务处于活动状态时,全面屏 iPhone 上的状态栏不会更改高度。

如果你的应用当前隐藏了状态栏,在全面屏 iPhone 上请重新考虑这个决定。与旧版 iPhone 相比,全面屏 iPhone 的内容垂直空间更大,状态栏占据屏幕一定的区域,而你的应用可能无法充分利用此区域。状态栏还显示对人们有用的信息。除非可以换取附加值,否则不能隐藏它。

允许自动隐藏指示器,谨防访问「主屏幕」。启用自动隐藏后,如果用户几秒钟内未触摸屏幕,指示器将淡出。当用户再次触摸屏幕时,它会再次出现。此行为应仅用于被动观看体验,如播放视频或照片幻灯片。

其他布局注意事项

确保你的网站在全屏显示屏上看起来很好。请参阅 webkit.org 上的 为 iPhone X 设计网站