iOS开发中“xib”与“纯代码”取舍
⼀. 知名app的xib与纯代码使⽤情况
讨论的是:对于 UI 界⾯的编写⼯作,到底应该⽤ xib/storyboard 完成,还是⽤⼿写代码来完成?有⼀些著名的应⽤,它们也⽤到了xib
1. 像 Twitter,Mailbox,objcio 这样完全不使⽤ xib 做界⾯的情况。
2. 像 QQ、、滴滴打车、⽹易新闻、猿题库这样少量使⽤ xib 的情况。
3. 像⽀付宝、⼤众点评这样重度使⽤ xib 的情况。
说明了即使是⽐较著名的 App,在使⽤ xib/storyboard 上,也有很⼤的差异。
有兴趣的伙伴也可以⾃⼰使⽤“tangqiao”的脚本(科学⼀下才好打开)分析⼀下
其实,我们实际开发中⼀些简单界⾯的开发,我们使⽤xib就⾜够了,速度快、产出也⾼效。但是,我们在处理⼀些UI⽐较复杂的页⾯,我们使⽤纯代码来进⾏开发,在迭代和修改⽅⾯更⽅便,所以建议复杂的开发还是⽤纯代码。
⼆. 考虑因素
1.开发效率
纯代码编写,界⾯越复杂,代码量越⼤,复杂度也随之上升。
使⽤xib,可以把界⾯布局相关的代码,属性设置的代码,迁移到xib上,修改了什么马上可以看到效果,所见即所得,界⾯开发速度快很多;使⽤xib中的autolayout,屏幕尺⼨适配也⽅便得多。
2.可读性
代码越多,别⼈读起来越费劲,使⽤xib,界⾯层的代码⼤量减少,可读性极好。
3.复⽤
纯代码可复⽤,xib⽐较难复⽤,有相同或相似界⾯,基本是复制⼀份过来修改,复⽤问题不⼤。
4.版本管理
代码的版本管理⽐较清晰成熟,⼤家也⽤得⽐较顺。xib因为其为xml格式⽂件,可读性⽐较差,多⼈同时修改同⼀个xib⽂件时会引起冲突,并且难以合并。所以,做好⼀个或⼀系列相关界⾯使⽤⼀个xib,
避免多⼈同时修改⼀个xib引起冲突。
5.性能
纯代码的界⾯加载速度、运⾏速度是最快的,xib会稍微拉低性能,消耗更多内存,但这对多数普通界⾯来说,没有太⼤影响。需要极致的性能和速度的界⾯,才使⽤纯代码。
不管是纯代码还是xib,autolayout都不宜使⽤过多,超过60个,会引起卡顿。
三. 优劣
使⽤ xib 和 sto r ybo a rd 的优点
开发界⾯所见即所得,可以快速通过拖拽构造界⾯。
你可以从 storyboard 中很⽅便地梳理出所有View Controller的界⾯间的调⽤关系。这⼀点对于新加⼊项⽬组的开发同事来说,⽐较友好。
使⽤ Storyboard 可以使⽤Table View Controller的 Static Cell 功能。对于开发⼀些 Cell 不多,但每个 Cell 都不⼀样的列表类设置界⾯会⽐较⽅便。
通过实现 – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender ⽅法,每个 View Controller 的跳转逻辑都聚集在⼀处,这⽅便我们统⼀管理界⾯跳转和传递数据。
Storyboard 可以⽅便将⼀些常⽤功能模块化和复⽤。例如 WWDC2011 年介绍 Storyboard 的视频就将微博分享功能模块化成⼀个单独的Storyboard。
使⽤ xib 和 sto r ybo a rd 的缺点
xib 对版本管理是灾难。storyboard 实际上的多个 xib 的集合,所以更容易让多⼈编辑产⽣冲突。⽽虽然它们是 xml 格式,但是冲突解决起来还是不如代码那么容易。
苹果对 xib, storyboard 的设计中带有当前电脑的操作系统版本和 Xcode 版本。所以如果两个协作的开发者电脑操作系统或 Xcode 有不⼀样的话,每次打开必定会修改这个⽂件。另外即使操作系统版本和 Xcode 版本⼀样,有些时候打开看也会造成⼀些⾃动的修改。
storyboard 带来的 segue 的概念对于开发来说并不省事,特别是在需要传递参数的时候。如果是⽤程序内部 trigger ⼀个 segue,那么需要在另⼀个回调的地⽅设置 dest view controller 的参数信息。
xcode界面我们发现 xib 中设置的颜⾊值并不精确,RGB 在真机 / 模拟器上常常会有 10 多像素的偏差。
xib 和 storyboard 对继承的⽀持并不友好。⽆法做界⾯的继承。
xib 和 storyboard 对搜索⽀持并不友好,⽆法⽅便地在 Xcode 中查关键词(但是可以通过写 bash 命令来查)。
storyboard 对组合⽀持得不太好,不允许在⼀个 xib 中附带多个⼦ view。
xib 和 storyboard 不太⽅便做界⾯的模块化管理,⽐如我们想统⼀修改界⾯中所有按钮的字体样式,那么在 xib 和 storyboard 只能⼀个⼀个⼿⼯修改,⽽如果是代码编写的,则只需要改⼀个⼯⼚⽅法的实现即可。
对于复杂的 App,storyboard 的性能会⽐较差。
纯代码的优点
⾼可复⽤,尤其是有很多相似的控件的时候,很好管理。
版本控制简单许多,多⼈协作更简单⼀些(xib线多),纯代码的话跟踪起来容易⼀些,合并困难度低
运⾏效率,⼤概会快⼀点
拥有代码逻辑可阅读性
纯代码的缺点
调UI要思考的就⼀些,不那么直观
写基础的UI功能都需要很久
总结:
从以往开发经验,我觉得代码+xib实现App界⾯,⼤⼤提⾼开发效率、可读性,版本管理的缺陷避免即可。现在App开发已经很成熟,企业开发基本会追求好看的界⾯效果、更复杂的界⾯布局,⽤纯代码实现,代码复杂度急剧加⼤,极有必要通过xib简化界⾯代码。另外,企业开发中,版本更新频繁、需求变化多,采⽤xib才能更快更好的响应这些变化。
参考链接

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。