在iOS9中最大变化之一就是引进了多任务。多任务允许多个app同时展现在屏幕上面。它有两种表现方式:Slide Over View 和 Split View。
一、Slide Over View
在 slide over view 中,用户可以通过右滑来展示app的列表,然后可以选择一个应用打开,此应用便会在右侧的狭窄的区域里面显示具体的内容。而在右侧展示的app的列表,就是之前用户打开过并且没有被"杀死"的app。然而左侧的app不会产生任何的用户交互。
二、Split View
为了打开split view, 用户可以在slide over view的基础上,往左拖拽垂直分割线。用户只需要拖拽应用之间的垂直分割线,就可以直接控制两个应用的尺寸。在拖拽过程中,当split view被激活后,那么此时界面上的应用不分前台还是后台应用了,他们都是前台应用。
注:split view目前只支持iPad Air 2。
在你的app中启用多任务
用Xcode7创建的项目默认具有多任务的功能,如果你已经有一个应用,你需要手动的启用多任务的功能,当你在使用iOS9 SDK的时候,这里有两件事情需要处理。
1. 在你的app中,启用所有方向的用户界面交互。
2. 使用 Launch Storyboards。
选择性启用或者禁用多任务功能
如果你的app已经完成了以上的步奏,那么在iOS9环境下,多任务功能就是可以使用的。如果你希望选择性的关闭这个行为,那么在info.plist文件中配置UIRequiredFullscreen这个节点就可以了。
不要再使用UIInterfaceOrientation
从理论上分析,如果你的app支持了多任务的功能,那么UIInterfaceOrientation就不起作用了。如果你的app使用了多任务的功能,你又想检测当前的UIInterfaceOrientation,但是此时,你不能确定你的app是否运行在全屏环境下。如果你的app是前台app并且iPad处于横屏状态,即时app的竖直方向上面的高度大于水平方向上面的宽度,但这个app的UIInterfaceOrientation值还是会返回UIInterfaceOrientationPortrait,而实际上此时的iPad出于横屏状态。
但是有时候,你有根据app的窗口大小来修改用户界面元素的位置或者大小的需求,那我们需要怎么做呢?答案是使用
traitCollection.horizontalSizeClass。它给你的用户界面提供了Size Class信息。通常来说,你可以通过它在你的app中放置视图等元素。
尺寸变化过度事件
在早前,当用户屏幕发生旋转的时候,如事件willRotateToInterfaceOrientation
和 didRotateToInterfaceOrientation是被建议用来检测界面尺寸变化的。到了iOS8之后,苹果引进了
willTransitionToTraitCollection
和 viewWillTransitionToSize
.而这些事件到了iOS9中之后变得更加有作用,因为他们可以和多任务结合使用。为了检测用户界面是出于横屏还是竖屏状态,你可以手动对宽度和高度进行比较工作。
对键盘事件的响应
在以前,你的app被键盘影响的唯一时刻就是你打开了自己的app,键盘会伴随着你的app的打开或者关闭的。现在,键盘出现在你的app的上面成为了一种可能。即使用户没有从你的app中打开键盘。