iOS 9 多任务分屏要点(2)

但是其实并不是所有的 app 都应该适配多任务,比如一个需要全屏才能体验的游戏就是典型。如果你不想你的 app 可以作为多任务的副 app 被使用的话,你可以在 Info.plist 中添加 UIRequiresFullScreen 并将其设为 true。

Easy enough?没错,要适配 iPad 的多任务,你需要做的就只有按照标准流程开发一个全平台通用 app,仅此而已。

使用 iOS 9 SDK 构建你的 app;

支持所有的方向和对应的 Size Class;

使用 launch storyboard 作为 app 启动页面。

虽说没太多特别值得一提的内容,但是也还是有一些需要注意的小细节。

一些值得注意的小细节

在以前是不存在 app 在前台还要和别的 app 共享屏幕这种事情的,所以 UIScreen.bounds 和主窗口的 UIWindow.bounds 使用上来说基本是同义词。但是在多任务时代,UIWindow 就有可能只有 1/3 或者 1/2 屏幕大小了。如果你在之前的 app 中有使用它来定义你的视图的话,就有必要为多任务做特殊的处理了。不过虽然滑动覆盖和分割视图都是在右侧展示,但是它们的 Window 的 origin 依然是 (0, 0),这也方便了我们定义视图。

第二个细节是现在 iPad UI 的 Size Class 是会发生变化的。以前不论是竖直还是水平,iPad 屏幕的 Size 总是长宽均为 Regular 的。但是在 iOS 9 中情况就不一样了,你的 app 可能被作为附加 app 通过多任务模式打开,可能会在多任务时被用户拖动从而变成全屏 app (这时 Size Class 将从 Compact 的宽度变为 Regular),甚至可能你的 app 作为主 app 被使用是会因为用户拖动而变成 Compact 宽度的 app:

iOS 9 多任务分屏要点

换句话说,你不知道你的 app 的 Size Class 会不会变化,以及何时变化,这都是用户操作的结果。因此在开发时,就必须充分考虑到这一点,力求在尺寸变化时呈现给用户良好的效果。根据屏幕大小进行合适的 UI 设计和调整自不用说,另外还应当注意在合适的时机利用 transitionCoordinator 的 -animateAlongsideTransition: 来进行布局动画,让切换更加自然。

由于多任务带来了多个 app 同台运行的可能性,因此你的 app 必定会面临和别的 app 一起运行的情况。在开发移动应用时永远不能忘记的是设备平台的限制。相比于桌面设备,移动端只有有限的内存,而两个甚至三个 app 同时在前台运行,就需要我们精心设计内存的使用。对于一般开发者来说,合理地分配内存,监听 Memory Warning 来释放 cache 和不必要的 view controller,避免循环引用等等,应该成为熟练掌握的日常开发基本功。

最后一个细节是对完美的苛求了。在 iOS 9 中多任务也通过 App Switcher 来进行 app 之间的切换的。所以在你的 app 被切换到后台时,系统会保存你的 app 的当前状态的截图,以供之后切换时显示。你的 app 现在有可能被作为 Regular 的全屏 app 使用,也可能使用 Compact 布局,所以在截图时系统也会依次保存两份截图。用户可能会在全屏模式下把你的 app 关闭,然后通过多任务再将你的 app 作为附加 app 打开,这时最好能保证 App Switcher 中的截图和 app 打开后用户看到的截图一致,以获取最好的体验。可能这并不是一个很大的问题,但是如果追求极致的用户体验的话,这也是必行的。对于那些含有用户敏感数据,需要将截图模糊处理的 app,现在也需要注意同时将两种布局的截图都进行处理。

画中画模式

iOS 9 中多任务的另一种表现形式就是视频的画中画模式:即使退出了,你的视频 app 也可以在用户使用别的 app 的时候保持播放,比如一边看美剧一边写日记或者发邮件。这大概会是所有的视频类 app 都必须要支持的特性了,实现起来也很容易:

使用 iOS 9 SDK 构建你的 app;

在 app 的 Capabilities 里,将 Background Modes 的 "Audio, AirPlay, and Picture in Picture" 勾选上 (Xcode 7 beta 中暂时为 "Audio and AirPlay");

将 AudioSession Catogory 设置为合适的选项,比如 AVAudioSessionCategoryPlayback

使用 AVKit,AVFoundation 或者 WebKit 框架来播放视频。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ac7ca2867042b6beb4036b8825f6acae.html