对UIStackView布局的研究

1,029 阅读3分钟

问题

最近遇到了界面开发效率的问题。现在强烈的感觉到,目前的代码布局方式太低效。按照一段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

戴铭的专栏