iOS 9 分屏多任务:入门(中文版)

移动开发
iOS 9 中多任务处理功能,为我们提供了更多的方式来畅享iPad和App带来的乐趣。其中的Slide Over在使用过程中,用户可通过该功能调出屏幕右侧的悬浮视图(在从右到左的语言环境下位于屏幕的左侧),从而查看次要应用程序并与其进行交互。

 重要

这是API或开发技术的初步文档。苹果公司提供这些信息主要是为了帮助你通过苹果产品使用这些技术或者编程接口而做好计划,该信息有可能会在未来发生改变,本文当中提到的软件应该以最终发布的操作系统测试和最终文档为准。未来有可能会提供新版本的文档信息。

iOS 9 中多任务处理功能,为我们提供了更多的方式来畅享iPad和App带来的乐趣。

  • Slide Over:用户可通过该功能调出屏幕右侧的悬浮视图(在从右到左的语言环境下位于屏幕的左侧),从而查看次要应用程序并与其进行交互。
  • Split View(分屏视图):呈现两个并行的应用,用户可以查看、调整其大小,并与其进行交互。
  • 画中画(Picture in Picture)功能:让用户在多个应用中可以悬浮播放视频,并可移动视频窗口以及调整窗口大小。

在Slide Over功能中,全屏显示的App 是主App。在Slide Over上选中的App 是次要App。在分屏视图Split View(在从左至右写的语言环境下)左侧的App是主要App,右侧的 是次要App。

33.png

34.png

35.png

37.png

如果你遵循了苹果iOS 8最佳实践建议,所有这些新的与App的交互方式,尤其是iOS 9中的多任务处理都是非常的简单和直观。从Xcode 7开始,每一个iOS App 模板都默认支持Slide Over 和 Split View。

从开发者的角度来说,最大的挑战是资源的管理。

每个iOS App(甚至那些没有使用多任务功能的App)需要在iOS9中良好地运行。现在,甚至全屏App 们都没有有效地利用整个屏幕、CPU、内存以及其他的资源。例如,用户可以:

  • 在屏幕上添加画中画窗口,不管屏幕上展示了什么内容(包括一个全屏App),这个包含视频的App会持续地在后台运行。来自其他App的PiP会增加App的内存压力,同时会降低App的显示帧率。
  • 滑动Slide Over 来使用次要App。当它是可视状态时,次要App在前台 运行,会再次增加App的内存压力,减少App的显示帧率。
  • 通过Slide Over 从次要App中调出键盘会遮盖主要App的一部分。每个iOS9 开发者,甚至开发全屏显示App却从未使用过keyboard 的开发者,可能希望能像UIWindow Class Reference中描述的那样响应键盘出现的通知。

39.png

为了能有效地参与到这种环境中,iOS9开发者必须谨慎调整他们的App 的资源消耗。如果一个App 每一帧消耗了太多的时间,屏幕的刷新率会低于60帧每秒。在内存压力下,系统会终止消耗最多内存的App。

想了解更多如何在iOS 9中如何管理资源,请查看Multitasking Mindset

了解App的特征并审视自己的工作

考虑你的App的特征后再决定你想采用哪种多任务增强功能,以及需要做什么工作。

大多数App应该采用Slide Over 和 Split View。从用户的角度来说,一个iOS 9应用不支持这两项特性是有点格格不入的。

如果你的App符合以下情况之一,可以不支持多任务处理功能:

  • 以相机为中心的App,使用整个屏幕预览和以快速捕捉瞬间为主要功能。
  • 使用全设备屏幕的App,比如游戏使用iPad的传感器作为游戏核心操控的一部分。

除此之外,苹果和你的用户们都希望你采用Slide Over 和 Split View。欲了解更多,请参看Slide Over & Split View Quick Start

如果不使用Slide Over 和 Split View,需将UIRequiresFullScreen key添加到Xcode 工程的Info.plist文件中,并且设置其Boolean value为YES。

注意:不使用Slide Over 和 Split View,表示你的App 不能出现在Slide Over 区域中,尽管你的App 运行在多任务环境中。在你想支持的硬件上测试App,以确保当其他App出现在Slide Over模式中,以及在播放来自第三个App的视频的画中画模式下,你的App都能流畅运行。

画中画(PiP)适用于以播放视频为主要功能的App。画中画(PiP)也最佳适合中长时间的内容播放。

支持画中画,能让你的用户在视屏播放的同时,还能与你App或其他的App交互。学习和运用PiP,请阅读Picture in Picture Quick Start。

在游戏场景的过渡、首次启动以及类似的内容不应该支持画中画(PiP)。你可以选择给定的视频退出画中画,如下所示:?

注意:如果你的App使用Media Player 框架播放视频,无论使用其框架中的MPMoviePlayerControllerMPMoviePlayerViewController类,你必须迁移使用AVKit或AV Foundation。Media Player视频播放正式在iOS 9中弃用。

如果你的App 播放HTTP Live Streaming (HLS)视频,请使用元数据优化播放。通过响应stream-variant元数据标签,优化应用程序在各种视屏窗口大小下的性能。并最大限度地减少电池消耗,你使用的内容分发网络(CDNs)同样也应该提供多个stream variants,并用合适的分辨率标签标注每个variant。欲了解更多信息,请参阅 HTTP Live Streaming Overview

如果你的应用程序在第二个物理屏幕上展示内容,请测试应用的转场。

特别需要测试从次要App过渡到主要App的用例。只有主要App才有资格使用第二个物理屏幕,所以过渡到主要App是一个新的场景,你的App可以从中接收UIScreenDidConnectNotification 通知。确保你的App可帮用户理解使用实例中发生了什么,当内容移动到第二屏上时,这可能有点奇怪。

开发环境

Xcode7 支持在iPad上使用多任务增强。

40.png

使用Xcode 7、模拟器和Instruments 中的新功能:

  • 在每个iOS App模板中预先配置支持Slide Over 和 Split View。例如,包括LaunchScreen.storyboard文件和预先设置的Info.plist文件。详见:Xcode 概述
  • Interface Builder中的Storyboards可以很容易实现自动布局约束。详见 Auto Layout Guide 和 Auto Layout Help
  • Interface Builder 预览助手让你能立即看到在Slide Over 和Split View场景中,你的布局如何适配不同的Size Class。请参阅 Size Classes Design Help 和 ?Previewing Your Layout for Different Localizations, iOS Devices, and iOS Versions
  • Xcode 7中的模拟器可让你使用在真实设备中相同的手势调出Slide Over 和 Split View。你可以使用模拟器测试所有Slide Over和Split View 布局表现,也可测试画中画。然而,模拟器不能模拟真实iOS设备的内存、CPU、GPU、磁盘I/O,或iOS设备的其他资源特性。有关模拟器的使用指南,请参阅 Simulator User Guide
  • Instrument中的内存分配、Time Profiler、内存泄露分析模板(Leaks profiling templates),能让你监测App的行为和资源使用情况。详见:Instruments User Guide?和 Instruments Help.
  • Xcode7 提供了可视化界面,用于全面支持资源目录(asset catalog)。为你的可视化资源使用资源目录,如图片和App图标。这对于优化App的内存十分重要。参见Asset Catalog Help。你也可以以编程的方式使用资源目录,请参阅 UIImageAsset Class Reference?。

想要测试内存、CPU、GPU以及所有硬件相关的表现,请在你想要支持的硬件上测试App。想要在iOS设备上测试你的App,你必须是iOS开发者计划的成员。请参阅 App Distribution Guide 中的 Managing Accounts 。

在iOS9中,以下型号的iPad支持多任务增强。

41.png

多任务思维模式

想要在支持iOS 9的iPad上的取得成功,不管是对系统,还是设备上的其他App,你的App必须在设备资源方面表现良好。

当你的App在前台运行时,其他的App可能会在它一旁运行,也可能播放画中画视频,并且持有它的App在后台运行。

在iOS9之前,你可以使用任何可用的CPU、GPU、内存、I/O以及硬件资源维持极好的体验。在iOS 9中,这些都将改变。App如何有效地利用资源成为了问题关键,如此,用户的iPad体验才是流畅和响应灵敏的。

为了获得最佳的用户体验,系统会紧密地管理资源消耗情况,并终止使用超过系统配额资源的App。

你在iPad上采用多任务处理增强的大部分工作,很有可能是对资源管理的最佳实践。第一步:

  • 使用Instrument测试你的App确保其没有内存泄露,不会无限内存增长或阻塞主线程。
  • 使用应用状态转变的协议方法,当你的App移到后台时,丢弃不必要的视图控制器、视图、资源和数据缓存。
  • 在每个所支持的设备上测试你的App,并同时使用资源密集型App,例如地图App,将其设置卫星视图和执行立交桥图像动画。以你的App分别作为主要App和次要App进行测试,确保两种情况下你的App和地图App都能快速响应。

在iOS 9中,不再适合从屏幕的界面方向来考虑。App能在iPad上适应水平方向上的compact Size Class或是regular Size Class,大小改变独立于界面的方向。相反要使用trait collections和Size Classes,采用UIContentContainer和UITraitEnvironment协议,请参阅Slide Over and Split View Quick Start所述。

同样在iOS 9中也不再适合使用屏幕的范围限制来判断你的App的可见区域,而是使用你App的窗口的范围来判断。注意你的App的范围应该是可操控。你不能设置App的范围界限,也不能阻止其改变。

尽管Auto Layout 自动布局不是最佳iOS 9 App所必须,但这样做会更容易。自动布局提供了性能的优势,并帮助你匹配苹果在 iOS Human Interface Guidelines 中描述的最佳实践。简单地说,Auto Layout帮助你的内容显示在正确的地方,并有助于未来你的App的迭代。你可以反复使用Auto Layout,一次一个布局。至少你的LaunchScreen.storyboard文件必须使用Auto Layout。纵观你的App,使用Storyboards帮助你的视图适应用户在不同情况下打开和使用你的App时视图尺寸的变化。

责任编辑:倪明 来源: 苹果开发者中心
相关推荐

2015-07-14 17:21:19

IOS 9分屏

2015-07-14 17:17:21

IOS 9分屏

2015-06-17 10:41:50

2012-07-13 13:42:40

2014-05-09 12:59:26

iOS移动互联网

2020-02-13 10:05:24

开源技术 趋势

2024-02-21 15:05:30

2010-05-28 18:07:47

TortoiseSVN

2009-08-18 16:19:57

Google Insi

2010-08-26 17:08:20

vsftpd faq

2010-05-24 17:26:59

TortoiseSVN

2011-03-03 13:25:57

2012-02-01 17:38:09

2009-06-11 10:15:09

netbeans 安装

2012-09-10 10:42:34

IBMdw

2010-01-19 14:46:04

jQuery 1.4

2015-07-02 16:25:09

iOS 9UIStackView

2012-08-22 10:08:53

Windows Ser

2015-08-06 11:25:25

iOS9多任务iCarousel

2012-03-14 09:27:56

Tango
点赞
收藏

51CTO技术栈公众号