问题
最近遇到了界面开发效率的问题。现在强烈的感觉到,目前的代码布局方式太低效。按照一段100%的开发时间来算,代码布局就占据了50%。我想现在减少这个比例,把更多的开发时间放在整体的逻辑上。
目前来看最合适的方式就是使用UIStackView了。即使是较为复杂的页面,老大在目前的版本中用storyboard结合UIStackView也可以很快速的搭建。
这已经可以说是解决问题了,不过还是差了一点点。
剩下的问题在于:
- storyboard这样的GUI界面实在是不适合多人协作,我很难去修改老大那边的改动
- 同时我也发现,使用代码的方式写UIStackView还是会遇到冗长的代码量这个问题,并没有减少代码布局花费的时间,同时也失去了storyboard这种GUI界面的直观
总结一下,目前在实际体验了UIStackView布局后,这个东西确实好用,但还是存在一些问题需要解决。于是我开始继续深入研究了一下。
UIStackView
基本的auto layout布局,leading,trailing,top,bottom等,都是具体到单个的视图,因此在使用时,需要对每个单个的视图单位都设置这些属性,这直接就是大量的重复工作。
在前端领域,有一种flexbox的布局思想,它的特点是响应式的布局,好处就是直接节省了上面说的重复工作。苹果公司也借鉴了这个思想,在auto layout的基础上封装了UIStackView这个类似flexbox的抽象视图。
一句话总结就是:
- 只使用UIStackView这个容器视图来设置子视图的位置,而不是重复地逐个设置子视图的位置
详情见官方文档: Auto Layout Guide: Stack Views
可视化格式语言:Visual Format Language
对于需要代码布局,不使用storyboard的开发者来说,苹果公司其实也考虑到了。苹果官方文档里,在讲自动布局的章节附录里就提出了“Visual Format Language“:
详情参考:Auto Layout Guide: Visual Format Language
它的特点其实很简单,就是在文字代码里达到趋近于图形效果的代码格式,最直接的目的就是尽量一目了然。
用VFL来做代码布局有一个比较好的实践:
github地址:STMAssembleView
总结
读了这篇The Key To Accelerating Your Coding Skills文章,里面提到了编程技能的两个拐点,在这两个拐点前,你会很痛苦,并且越接近拐点,越痛苦。可一旦越过拐点后,成长速度开始加快,也会越来越享受。
我觉得我现在就在接近拐点的过程中,很明显的能感觉到。同时由于“痛苦”越来越剧烈,我的自我怀疑也越来越加深。怎么办呢?再咬咬牙坚持一下吧。
然后,在学习钻研的过程中,我也深刻地意识到找第一手资料是多么的重要。一手资料的好处非常非常多,不赘述了。这个道理其实很容易懂,但它难的地方在于:其实处理第一手资料也挺难的,需要比较多的积累和训练。不多说,这也是一个需要努力积累的点。
参考文档:
Auto Layout Guide: Understanding Auto Layout
戴铭的专栏