iOS,Xcode,Storyboards …我们迄今为止在苹果世界中的故事!

自两年前开始我的软件顾问之旅以来,我就有机会深入研究了全栈开发的多个方面。 我们的顾问服务的基石之一是iOS开发。 最初向客户提供优质的iOS咨询服务是一项挑战。 这是由于多种原因……(为什么苹果要批准一个简单的App才花2-3个星期!)。 我们犯了错误,并从错误中迅速汲取了教训,再也没有重犯。 最近,我有一个机会分享了我们对iOS Storyboarding @ SwiftIndia,PuneChapter的学习。

“ Storyboards…My Learnings” @ SwiftPune Meetup May’17

在本文中,我想分享使用iOS Storyboards时的相同课程。

我们在2015年初获得了第一个iOS App需求。我们都非常高兴能借此机会交付商品。 到那时,我已经在iOS堆栈上进行了实验,熟悉Xcode和相当新的Swift(与ObjectiveC相比)语言。 故事板的概念很吸引人,因为当我刚开始时,它具有多个优点。 其中一些是:

故事板提供了该应用程序的完整概念概述

他们使对视图和相应过渡的理解变得容易

使用情节提要,AutoLayout变得容易得多

在表单情节提要中,Xcode提供了一个出色的工具,可以从设计人员的角度将其集成到IDE中。

故事板有助于加快设计和原型制作的速度

利用情节提要的明显优势,我们为第一批客户构建了Apps。 由于原型制作非常快,因此与我们的Android开发相比,iOS开发的时间表相应地也更快。

在此之前,我们在整个项目中使用了一个情节提要板,并为我们的新要求继续使用相同的策略,直到一个重大的项目导致了我们的情节提要使用策略发生了变化。 2015年末,我们与医疗服务聚合商联系以开发他们的App。该App是诸如诊所,医院,病理实验室,化学家,救护车服务等医疗服务的聚合商。我们完成了设计阶段,并开始构建相应的故事板对于该应用程序。 但是,我们观察到以下有关问题:

该应用在一个故事板上的屏幕超过51个,并且开始变得太大

结果,情节提要的加载时间开始变长

情节提要板流开始出现故障,这使其面临挑战

随着多个开发人员开始从事该项目,存储库合并冲突开始变得很痛苦

医疗服务聚合器移动应用程序

有了这些问题,我们开始考虑可能的解决方案。 我们评估了技术中给出的建议。 博客,进行了研究,并提出了以下行动计划:

将功能分为多个情节提要

对情节提要和相应的控制器进行一对一映射

基于功能的视图控制器分离为减少回购合并冲突铺平了道路,因为每个开发人员一次都在开发一项功能

和瞧! 故事板开始加载“ smooth-n-easy”。 它们变得清晰而实用。 通过这种策略,我们认为我们已经为iOS App开发找到了成功的秘诀! 我们使用情节提要分解方法构建了下几个应用程序,所有内容似乎都处于受控状态。

车辆跟踪,ProcessAutomation和SocialMedia中的移动应用程序

在2016年中期,我们对iOS故事板及其工作方式的看法再次发生变化。 我们从EduTech领域的一位客户那里获得了一项要求,以构建一个用于培训大型零售商店中的销售代表的应用程序。 该应用程序将在亚洲,澳大利亚和欧洲启动。 因此,必须支持本地化。 它包含许多多媒体丰富的培训内容,包括音频同步文本,视频,动画测验等。我们使用过去学到的策略以及在开发过去的Apps时获得的专业知识来开火。 在我们拥有的设备(iPhone 6,iPhone 6S,iPad Air,iPad2)上,一切似乎都运行良好,并且我们正在根据客户反馈更新App UI。

销售代表培训移动应用程序

但是,有一天,当我们在iPhone 6S Plus上测试App时感到困惑,发现我们为标签设置的约束不适用于相同尺寸/特性的设备。 例如:iPhone6S和iPhone6SPlus的尺寸类别/特征在纵向模式下相同。 即使那样,布局的外观也有所不同。

这简直就是一场灾难! 我们的文本(标签)定位约束开始在不同设备(6S与6S Plus)之间突破。 而且,处理约束和尺寸成为噩梦。 说服客户这个问题需要大量的返工本身就是一项艰巨的任务。 经过几次讨论后,客户友好地同意了延期,我们开始着手解决这一问题。

与iPhone 6S相比,iPhone 6S Plus上的布局约束未对齐

最后,我们提出了以下解决方案:我们删除了屏幕中各种元素的现有布局约束,并在运行时根据设备类型对其进行了更新。 这个策略是一个救星,我们可以成功地完成该项目。

布局约束的运行时应用取决于设备类型/大小

总而言之,我想说到现在为止我们在iOS开发过程中已经了解了有关故事板的以下内容:

故事板非常适合快速制作原型

它们提供了完整的App工作流程的鸟瞰图

但是,随着复杂性的增加,情节提要板的加载速度往往变慢,遍历不便,并且需要加以分解以发挥其优势。

对于属于相同大小类别的设备,自动布局的最佳运行方式不受约束依赖性的影响

如果需要相对地布置元素,那么为了适应相同大小类的不同设备的布局约束,则需要在运行时强制执行它们

就像一种生活哲学一样,世界上几乎没有任何东西是天生的好坏……这取决于环境,场景和时间! 我想iOS Storyboard也是如此………

–和平\ m /