http://www.cocoachina.com/ios/20151010/13601.html

iOS 9 的一个重大变化就是增加了多任务,这个多任务允许用户在屏幕上同时运行多个 app。有两种形态,Slide Over(滑动覆盖视图) 和 Splite View(分割视图)。

Slide Over View

这种形式下,用户可以从右侧划出一个窄的区域,在这个区域里展示了应用的列表,然后你可以选择打开一个,在这个区域里展示。它出现在你前面运行的程序之上,并且两个应用之间不会有任何相互操作和影响。

Split View

为了打开 splite view,用户要把(两个应用之间的)分割线拖到左边。用户自己来控制被垂直分隔开的2个应用的窗口大小。当 splite view 为当前状态时,没有前后台的概念,两个应用都是在前台的。

目前,splite view 仅适用于 iPad Air 2。

Enabling Multitasking in Your App

当你创建新项目时,多任务设置是默认开启的。如果要为一个老项目开启这个功能,则需要手动设置一下。下面是你在使用 iOS 9 SDK 的情况下,需要做的:

1. 允许全部的方向(Portrait, Upside Down, Landscape Left, Landscape Right)

2. 使用 Storyboards

设置(Opting Out)

当你具备了上面两个条件后,多任务才能在你使用iOS 9 SDK 编译时,被允许使用。如果想要编辑这个属性,在 info.plist 中指明 UIRequiredFullscreen这个 key 的值。

Auto Layout 的重要性

Auto Layout 在 iOS 6中首次被引入,它允许你通过设置约束而不是位置信息来控制UI的布局。 Adaptive Layout 是在 iOS 8中被引入,它把 Auto Layout 的能力提升了一个级别,允许你为不同尺寸的设备设置不同的约束。Size classes 可以根据 app 窗口的大小,确定一个相对的位置。

由于要多任务,你仍然可能有很多问题,需要在 iOS 9 上进行调解。

不要再使用 UIInterfaceOrientation 了

理论上,UIInterfaceOrientation 在多任务的情况下不在起作用。如果你想为一个在多任务中的app 确定他的 UIInterfaceOrientation, 你无法确认是否是在全屏状态下。比如说,你的应用在前台并且是横向的,尽管比纵向的会宽,但是(代码)仍然会给你返回为 UIInterfaceOrientationPortrait。

但有时候我们仍然需要根据方向来调整一下用户界面,怎么办呢?答案是,使用traitCollection.horizontalSizeClass。 他会给你 Size Class 的信息,你可以根据方向来调整应用中view 的布局。

尺寸变化事件

以前当旋转事件发生时,我们推荐使用 willRotateToInterfaceOrientation 和 didRotateToInterfaceOrientation方法,来响应。 在 iOS 8 里苹果介绍了 willTransitionToTraitCollection 和 viewWillTransitionToSize 两个方法。这些方法在 iOS 9里,对于多任务仍然有效,并且更重要了。你可以根据需求,来检测方向和手动比较宽高等。

键盘响应事件

以前,只有当你打开应用时,键盘事件才有效。现在,有可能仅仅是最上层的应用需要键盘,他就出现了。

某些情况下,出现键盘可能对你的应用并无影响。但有时,可能键盘会挡住你的应用的一块儿重要位置,这时 UIKeyboard 的通知就很重要了。  WillShow, DidShow, WillHide, DidHide, WillChangeFrame 和 DidChangeFrame 这些通知让你有能力处理此类问题。这些通知事件,在屏幕上出现的两个应用中都能接受到。

其他考虑因素

(多任务带来的)这些变化,让你必须要考虑的,并非仅仅是视觉改变。以前只有一个应用运行在前台,你可以使用大量的 CPU,GPU 和内存资源。但现在不同了,假如一个用户选择了 split view 或者 slide over view ,于此同时,他还利用 iOS9 的画中画的特性,观看一个视频,就是三个应用来分享这些资源了

为了更好的用户体验,系统会管理资源的占用,并且会终止掉占用资源过多的 app。--- 来自苹果 iOS9 多任务开发文档。

你需要对你的应用在不同情况下,进行更多测试来却确保有信心达到预期的效果,并确保没有占用多余的资源。

延伸阅读

想要了解更多关于 iOS9 多任务的内容,请阅读开发者中心的文档 Adopting Multitasking On iPad。我同样推荐,观看WWDC 2015 的session 410 Continuous Integration and Code Coverage in Xcode

iOS 9 学习系列:Split Screen Multitasking的更多相关文章

  1. iOS/iPhone学习系列、代码教程

    part 1--入门: 1. xcode 版本下载 以及 iphone sdk 下载: 最新版本在此下载: http://developer.apple.com/devcenter/ios/index ...

  2. iOS 9学习系列:打通 iOS 9 的通用链接(Universal Links)

    在WWDC 2015 上, Apple 为 iOS 9 宣布了一个所谓 通用链接 的深层链接特性, 视频地址为 [无缝链接到您的 App].虽然它不是一个必须实现的功能, 但还是需要引起一些注意. 在 ...

  3. iOS 9 学习系列: Xcode Code Coverage

    Code coverage 是一个计算你的单元測试覆盖率的工具. 高水平的覆盖给你的单元測试带来信心.也表明你的应用被彻底的測试过了. 你可能写了几千个单元測试,但假设覆盖率不高.那么你写的这套測试可 ...

  4. iOS 9 学习系列:UIStack View

    http://www.cocoachina.com/ios/20150921/13492.html 在 iOS9 中,Apple 引入了 UIStackView,他让你的应用可以通过简单的方式,纵向或 ...

  5. iOS 9 学习系列:Storyboard References

    http://www.cocoachina.com/ios/20150922/13474.html 如果你曾经使用 interface builder 创建过一个复杂.界面非常多的应用,你就会明白最后 ...

  6. iOS 9 学习系列:UIStack View (转载)

    作者:Nathan_Bao 地址:http://www.jianshu.com/p/1991e6c2881a 在 iOS9 中,Apple 引入了 UIStackView,他让你的应用可以通过简单的方 ...

  7. iOS学习系列 - 扩展机制category与associative

    iOS学习系列 - 扩展机制category与associative category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方 ...

  8. 开篇:软件项目的整个流程 - IT软件人员学习系列文章

    这段时间闲来无事,就在总结以前的项目经验,然后写成博客的形式以进行记录.本文就对<IT软件人员学习系列文章>做个开篇吧. 对于IT软件的开发来说,无外乎B/S.C/S和Android.iO ...

  9. 1、HTML学习 - IT软件人员学习系列文章

    本文做为<IT软件人员学习系列文章>的第一篇,将从最基本的开始进行描述,了解的人完全可以跳过本文(后面会介绍一些工具). 今天讲讲Web开发中最基础的内容:HTML(超文本标记语言).HT ...

随机推荐

  1. 你真的了解cookies吗?

    互联网隐私安全,直接放链接吧,这一篇非常好的文章,详细,全面,专业. http://www.freebuf.com/articles/web/127266.html 浅谈Web客户端追踪 一.   W ...

  2. Action详解

    简介 Action 是用于处理请求操作的,它是由 StrutsPrepareAndExecuteFilter 分发过来的. 在 Struts2 框架中,Action 是框架的核心类,被称为业务逻辑控制 ...

  3. Jquery手机下拉刷新,下拉加载数据

    一.Jquery手机下拉刷新,下拉加载数据.附加有源码 <!DOCTYPE html> <html> <head> <title>手机</titl ...

  4. Vuejs实战项目四:权限校验

    路由跳转参考文档:https://router.vuejs.org/zh/guide/advanced/navigation-guards.html 在/src下创建permission.js进行权限 ...

  5. 微信网页授权demo2

    1.在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名.请注意,这里填写的是 ...

  6. CF 529B Group Photo 2 (online mirror version)

    传送门 解题思路 这道题要用到贪心的思路,首先要枚举一个h的最大值,之后check.如果这个东西的w[i]与h[i]都大于枚举的值就直接return false,如果w[i]比这个值小,h[i]比这个 ...

  7. View的滑动冲突和解决方案

    1.滑动冲突原因: 当有内外两层View同时可以滑动的时候,这个时候就会产生滑动冲突. 2.常见的冲突场景: 场景1: 场景2: 场景3: 4.解决方法种类: (1)外部拦截法: 针对场景1,我们可以 ...

  8. Hdu 4965(矩阵快速幂)

    题目链接 Fast Matrix Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K ...

  9. vim 查找及替换

    #全文(%)查找(s)行首2个空格开头(/^ ), 替换(g)为无即删掉(//) :%s/^ //g #全文查找每行尾的2个空格,删除 :%s/ $//g

  10. 使用 prerender 实现 SEO

    server { listen 80; server_name www.umount.com; access_log /var/log/nginx/livefrontend/access.log LF ...