iOS 9 分屏功能碎碎念
当 iOS 9 还处于测试阶段的时候,作为iOS开发者,已经奔赴到了新系统的最前线。
最让人期待的莫过于 iOS 9 的分屏功能,但是,对于开发者来说,特别是对于第一批适配 iOS 9 的开发者来说并不能说是一件幸福的事。因为“测试版”意味着“坑”,而无数的“测试版”意味着无数的“坑”。在iPhone或者iPad上安装 iOS 9 也许并无法感受到这其中的艰苦。这份艰苦来自于 XCode 和 OS X。XCode 已经升级到 Xcode 7 beta 4,而 OS X 也不知不觉地升级到 beta 6。在这些版本之间适配就已经让人抓狂,更不用说偶尔的不兼容以及模拟器的不断崩溃。也许某一次更新就会导致你整个模拟器无法使用,接下来就是无尽的恢复系统和更新应用。
这是开发环境最基本的坑。接下来就是 iOS 9 产品级别的坑了。iOS 9 引入了分屏的概念,屏幕可以被切割成几种不同的类型。这个改进导致了界面需要对各种屏幕进行适应。简单的应用还好,复杂的应用、特别是对用户交互进行过优化的应用在这方面的改动阻力会特别大。原因很简单,原来的 iPad 只分横竖屏,大部分的阅读类应用可能在这方面没有特别的需求,但编辑类等交互比较多的应用需要对横竖屏进行优化。然而,分屏却一下子打破了这种布局。横屏状态下依旧会出现窄竖屏,本来针对iPad的大屏优化一下子不复存在。
以上还是产品级别的。代码级别上的,苹果对屏幕的区分是有限的,甚至横屏的三分之一和二分之一也是同个类型的屏幕。在适配而不是改版的过程中,如果产品要求必须区分这两种类型的屏幕,那就只能暗自诉苦了。再者,iPad上 iOS 9 支持分屏的应用不再区分转屏功能,也就是说,无法强制锁定屏幕,锁定屏幕只能由用户主动锁住。
好在,苹果并没有强制所有应用都必须支持分屏功能。不支持分屏功能的应用不会进入分屏列表,而且也无法产生其他分屏。
就我目前接触的情况来说,分屏对产品的影响远大于对技术产生的影响。
对技术来说,我们只需要对各种屏幕类型加以区分,并显示不同的界面。iOS界面开发早就引入了自动布局的概念,在分屏这一块,自动布局起了很大的作用。如果产品要强行区分各种屏幕,也能够强制判断区分。不过很多 iOS 9 的新API倒是容易让开发者掉进坑里。不过这种坑倒是掉几次就习惯了。
而对于产品来说,如果想要适配分屏功能,则基本需要对整个产品进行重新设计。有分屏和没分屏的iPad应用是不一样的,这个不一样体现在交互上。一款好的应用往往需要针对不同的使用场景进行特定优化,而如果无法进行这类优化,那这款产品就会退居平庸。然而,iPhone和iPad的交互是截然不同的,而iPad的宽屏和窄屏必然也需要区分,如此大的工作量,以及在同个设备上不同屏幕的适配区分,对一款产品来说是一项巨大的挑战。
本来我以为这是第一次产品跟着技术走,但仔细想想,每次产品都是跟着技术走,一旦技术稳定,就开始寻求突破。从抽屉式界面、Tabbar界面,到此次的分屏适配,其实都是产品在当前技术上的优化和改进。导航太多,就用抽屉式界面,大屏手机出现,就可能需要回归Tabbar模式,甚至需要思考其他模式来突破当前的使用习惯。而分屏,则要求产品设计不再拘泥于特别的屏幕尺寸,而是针对不同类型的屏幕来设计。
总的来说,适配新系统,很苦,但至少有一次,我们走在了较前沿。