「飞行课堂第二期」吕文翰:Swift 与 Auto Layout 最佳?实践

编者按:fir.im「飞行课堂」旨在为开发团队提供更多移动开发和测试分发的技术经验和教训,分享最新最 IN 的技术观点与干货。感谢这些对技术执着的飞行导师接受我们的邀请,和大家面对面展开最直接的交流,希望我们的这次沙龙为你们带来技术思想层面新的突破。

知名技术博主@吕文翰_@JohnLuifir.im飞行课堂·北大孵化营站做了一场关于“Swift 与 Auto Layout 最佳?实践”的技术分享。以下是关于本次技术分享会的内容整理:

首先,JohnLui 回答了飞行课堂前期收集的观众问题:“该不该使用Swift开发商业项目?”,他认为Swift作为一门静态、强类型的编译型语言,应该直接用于开发商业项目。除了Apple全力推行、最低可支持iOS7之外,理由如下:

理由一、语言层面更加丰富、现代 fir.im

fir.im

fir.im

fir.im

fir.im

fir.im

fir.im

fir.im

理由二、完全兼容 Cocoa、Cocoa Touch fir.im

理由三、直接支持系统底层的 C api fir.im

本次分享另一个主题:Auto Layout

接着,吕文翰介绍了 Auto Layout 基本原则,并分享了他在探索 Auto Layout 布局特性的一些实战技巧。

fir.im

(图:Auto Layout 基本原则-完全约束)

Auto Layout 的逻辑其实只有一个,如何在一个大小不确定的方形的,坐标在左上角0.0的一个坐标系上,确定一个view的大小和位置,只要它能在每一个界面上确定,就它就OK。如果一个UIView没有尺寸也没有位置,在这种情况下,只需要四个值:距左边的值、距上边的值,宽度和高度,只需要这四个值,就可以定下一个 view 。

Auto Layout实战技巧系列

fir.im

fir.im

fir.im

fir.im

fir.im

Auto Layout基于内容的约束

fir.im

“加了一个label,label默认是一行,然后我在里面加了一段话,这段话很长,然后把label调成了0行,这一步非常关键。调成0行之后,我给它加了三个约束,就是居左,就左边距、上边距和右边距。在这种情况下,其实一个label就已经约束完成了,为什么我又把它设成0行?0行就代表着自动扩展,根据内容自动扩展。我们可以看到这里面已经设了三个约束。这时候我们可以看这是黄线,黄线就代表着系统认为我们的约束是OK的。”

Auto Layout UITableViewCell 自动定高

fir.im

实际项目中,如果我们用了自动定高的话,一般都是有一部分元素是上对齐,有一部分元素是下对齐,然后中间你任意挑两个元素,中间加一个垂直距离,直接可以自动定高,自动定高需要两行代码设置。

Auto Layout 动画

fir.im

Auto Layout动画由于是底层设计,性能有非常大的优势,吕文翰在第一个商业Swift项目“托福喵”中使用Auto Layout动画,CPU消耗低于5%。


以上是 fir.im 「飞行课堂第二期」@吕文翰_@JohnLui 的技术分享,特此整理,希望对你有用。

fir.im

fir.im - Meng

尺度中蕴含本质