处理好方向改变
用户希望能以任何角度使用 iOS 设备。 你需要基于你的程序和它支持的功能, 确定如何响应用户的殷切期望。
无论什么方向,都保持对主任务的关注。这是优先级最高的准则。用户使用你的程序来浏览或操作他们关注的内容。如果改变方向后,程序不再展示之前的核心内容,会让用户觉得失控了。
如果程序不准备对各个方向提供支持,要再三斟酌。用户希望能在任意角度使用你的程序,你如果能满足这个愿望就太棒了。iPad 用户尤其希望无论他们怎么端着设备,都能正常使用程序。但在某些情况下,程序只能在竖屏模式或横屏模式下运行。如果你的程序只能在一个方向上使用,确保以下几点:
♦ 以你支持的方向启动,忽略当前的设备方向。例如,如果你的游戏或者媒体播放程序只以横屏模式显示, 就应该在启动的时候就用横屏模式, 即使设备是以竖屏模式放置的。这样,如果用户在竖屏模式打开它,他们就知道应该把设备转过来,再浏览内容。
♦ 避免在界面上用文字等告知用户"把设备转一下" 。以你支持的方向启动已经明确告知用户要旋转设备,不要再添乱了。
♦ 无论只支持横屏模式还是竖屏模式,要支持这种模式下的两种方向。例如,如果你的程序只以横屏模式运行,用户无论是以 home 键在左边还是在右边拿着设备, 都该能用。而且,如果用户在使用你的程序时把设备转了 180 度,最好你能把内容也跟着转 180 度。
如果你的程序把设备的角度作为一种输入信息,你可以按程序的需要处理旋转。例如,如果你的程序是个游戏, 容许用户旋转设备来控制方块移动, 屏幕就不用在设备旋转时跟着转了。这种情况下,你应该在游戏开始前让用户选择好以哪种方向来玩。等游戏开始后,就可以按照程序自定义的方式去处理屏幕旋转了。
利用特定的转场动画效果来实现平滑旋转。如果你的屏幕布局很复杂,当用户旋转设备时最好使用 "corss-fade" 转场。 UIViewController 类的 reference 里有对 "Handling View Rotations"的解释。
留意加速度。欲知详情,详见"Core Motion Framework Reference" 。
在 iPhone 上,在应对设备方向改变时要留意用户的需求。用户经常把手机横过来,是为了想看到更多。如果你仅仅是缩放了一下内容,那么就没满足用户的期望。你应该重新进行页面布局,以更好地适应屏幕。
在 iPad 上,要在所有方向下都能运行,尽力满足用户需求。iPad 的大屏幕诱使用户在想看到更多时旋转屏幕。由于用户不关注设备的外框和 home 键的位置,他们不觉得设备有默认的放置方向。 这导致用户希望程序能以他们正在使用的方向运行。 你的程序应该尽可能的通过支持各个方向来鼓励用户以各种姿势使用 iPad。
当你的程序需要处理旋转时,请参照以下指南:
♦ 考虑改变展示辅助信息和功能的方式。在保证最重要的内容始终在视野范围内的前提下,可以考虑在设备旋转时改变次要信息的呈现方式。
在 iPad 版 Mail 上,账户和收件箱列表是次要内容,邮件是主要内容。在横屏模式下,次要内容放置在分栏的左侧;在竖屏模式下,放置在弹出层里面。
再比如,横屏模式下,游戏的外面有矩形框。转成竖屏模式后,外框需要重绘以适应屏幕。这会导致上下边缘会有大块空白。此时不应把画面纵向拉伸,而应在空白区域填充辅助信息或物体。
♦ 避免随意改变布局。 应该在各种方向下提供统一的体验, 这使得用户可以在旋转设备后沿用使用习惯。例如,如果 iPad 在横屏模式下用网格显示图像,竖屏模式下就不应用列表来展示图像。
♦ 如果可能的话,应该尽量避免重组信息,重排文字。尽量在各种方向保持相似的格式,尤其是当用户阅读文字时,避免旋转屏幕后用户找不到刚才读到的地方。如果重组不可避免,使用动画帮助用户追踪变化。例如,如果你必须在旋转时增减文字的栏数,你也会选择把栏的运动藏起来,简单地让新的排版渐现。为了帮助你设计合适的旋转动作,想想当你旋转真的纸时会对内容的变化有怎样的期待。
♦ 为每一种方向提供独特的启动图片。如果每种方向有独特的启动图片,用户就能在每种方向下都能体验到平滑的程序启动。与 iPhone 的桌面不同,iPad 的桌面支持各个方向。所以用户可能会以退出上一个程序的方向启动你的程序。