极客时间 | iOS开发高手课 03 | Auto Layout 是怎么进行自动布局的,性能如何? | 读书笔记
--- 首先贴出极客时间原文地址 ----
03 | Auto Layout 是怎么进行自动布局的,性能如何?
这里只是对原文涉及到的部分知识点进行总结, 不会原文粘贴. 如有侵权,请联系我.
总结
iOS 6
系统时就引入了Auto Layout
Auto Layout
依赖的是Cassoway
算法, 其目的是 能够有效解析线性等式系统和线性不等式系统,用来表示用户界面中那些相等关系和不等关系.- 整套布局引擎系统叫作
Layout Engine
,是Auto Layout
的核心,主导着整个界面布局. Auto Layout
仅仅是增加了一层自动将约束转换为frame
的计算而已.Auto Layout
在iOS 11
之前有个问题, 复杂嵌套视图会将计算量带来指数式增长消耗 (原因是NSISEnginer
会将约束重新计算,导致计算量的指数增长), 而iOS 12
对其进行了极大优化, 更好地利用了Cassoway
界面更新策略而解决了这一问题. 戴老师吐槽了一下, 这不是 Cassoway 的锅- 戴老师温馨建议 注意多使用
Compression Resistance Priority
和Hugging Priority
让布局更灵活,易维护. Auto Layout
原生API
不易用这个大家都知道, 所以Masonry
或Snapkit
才这么流行.- 苹果为了提高
API
易用性而提供了 UIStackView 这种类似Flexbox
的布局方式, 以及 VFL 这种DSL
(领域特定语言) 简化写法.