本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
前言
我在一个Swift开发群,平时大家会吹吹水,讨论一下开发问题。
每次我们谈到iOS开发的UI问题的时候,总是会为使用xib/storyboard,还是使用纯代码开杠。
这里我想把这个问题抛出来,并说说我个人的看法和观点。
我知道一旦开始讨论这个话题,可能无意就会陷入开杠的局面,不过还是想聊一下。
声明我的立场:我是纯代码流
首先我要说的是,我是一个学习过xib/storyboard拖拉进行UI搭建的人。
我是先会的使用xib/storyboard写UI,然后才学着用纯代码写UI的。
按道理说,这种技术一般都是先接触先成为习惯,应该更喜欢使用xib/storyboard流啊。
但是当我自己在xib/storyboard和纯代码体会之后,我基本就走了纯代码流?
这是为何呢?
网上说了很多xib/storyboard的不好,抑或纯代码的好。我有一个比较物质的原因:
xib/storyboard给我的感觉就是比较费屏幕,特别是当我在公司只有一个iMac并且不能外接显示器的时候,xib/storyboard的拖拉就感觉有点不能大开大合了。
抑或当你在使用13寸的MacBook pro做开发的时候,xib/storyboard会让你觉得屏幕根本不够用。
买个显示器总是要开销的吧,既然可以把这部分钱省下来,何乐而不为呢?
xib/storyboard流的优劣势
当然,有句话说的好,存在即合理。
xib/storyboard流当然有它的优势
-
开发效率高,因为基本上不写代码了,纯粹的拖拉控件,只要熟悉操作与控件,对于一个UI的编写肯定是比纯代码快的。
-
开发的UI既见既所得,对于初学者,去掌握控件的特性是非常好的学习过程,这也是我先学的xib/storyboard流,之后才转入纯代码流的。
xib/storyboard流的劣势与面临的挑战:
-
xib/storyboard流难以维护,早期的时候在Git管理上容易冲突,当然这个优化好提交规范可以规避,而真正困难的是持续维护成本:
-
开发人员离职,或者需要交接时,xib/storyboard会成为接手者的老大难,因为不了解逻辑与业务,修改xib/storyboard常常是牵一发动全身,整个界面都炸锅
-
当业务持续进行时,UI也会随之变化,进而需要修改xib/storyboard,很多时候修改xib/storyboard需要花的时间与人力成本会比较多。
-
而反观纯代码流,只要代码写的不太凌乱,有说明文档或者注释,理解一个UI并不算太困难,而且可以很快上手并跟进业务修改UI。
- 未来的主流还是纯代码写UI,无论是从跨平台的Flutter,还是SwiftUI,我们可以看到声明式的代码流才是未来开发的主流,如果你做开发需要跨端,纯代码的这种习惯可能更适合。
| Flutter | SwiftUI |
|---|---|
大佬一些观点
每次聊到xib/storyboard流还是纯代码流的时候,喵神的观点和文章总是会被人拿出出来反复提及:代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧。
大佬都发话了,你还在这里瞎掰扯啥?
不过,我觉得吧,技术文章的引用与学习也是要分场合与时间的,这篇最早发布的与2013年,当然最近更新一次:
这篇文章也是我入门xib/storyboard基础文章,但是目前的编写App的环境与思路都已经有了很大的变化,如今在这个需求快速迭代的年代,xib/storyboard真的快不起来了。
另外,喵神是比较专注与iOS开发这块,在目前我们身处的环境,我们不可能做到iOS一路走到底。
所以大佬好的技巧与建议要听,但是也要结合自己的工作与开发情况。
纯代码流
因为说过xib/storyboard流的优劣势,所以纯代码流的优劣势就不用说多。
唯一提及一点就是Apple系统层级的API真的不够好用,虽然Apple已经优化好多,但是还是建议使用SnapKit或者Masonry。
从某种意义上说,纯代码流失去了这个两个框架,基本上也就失去了意义。
建议大家直接看SnapKit的文档,这个文档覆盖很全面:Snapkit - Documentation
参考文档
代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
总结
小孩子才做选择,成年人当然是全都要。
技多不压身,其实在xib/storyboard流还是纯代码流的选择上,我个人觉得还是看使用的场景,比如是写快速Demo,对UI要求不高的话,可以使用xib/storyboard流,再比如自己个人项目,爱怎么折腾就怎么折腾,只是可能在公司项目中需要注意一下。
最后关于xib/storyboard流还是纯代码流,我想说的是从心,怂就对了。
别人说别人的,我用我的,自己开心就好。
你说的都对,Who TM Cares
关于封面图
源自于《白色相簿2》的人物角色,虽然我没有确定,应该是深崎暮人作画,《白色相薄2》的作者丸户史明和深崎暮人在另一部作品有合作——《路人女主的养成方法》。
《白色相簿2》是一部典型的三角恋爱故事,在这里xib/storyboard流还是纯代码流也是二选一。
我们下期见。
欢迎大家留言说说你是xib/storyboard流还是纯代码流,以及它们的优劣势吧。
欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章。