AutoLayout原理

2020-03-28  本文已影响0人  CharmecarWang

手动布局为什么比自动布局效率要高?

实际上这个问题主要是针对iOS12之前,使用AutoLayout,视图嵌套的数量对性能的影响是呈指数增长的。因为在iOS12之后,AutoLayout的性能跟手动布局已经相差很小了。

AutoLayout原理

AutoLayout用到了布局算法Cassowar算法和一整套布局引擎Layout Engine
每个视图在得到它的布局之前,Layout Engine会将视图、约束、优先级、固定大小通过计算转换成最终的位置和大小。
具体工作流程:

因此使用 Auto Layout 和手写布局 的区别,就是多了布局上的这个计算过程

性能问题

在iOS12之后,它是这样的:


iOS优化后

而在此之前的 Auto Layout,视图嵌套的数量对性能的影响是呈指数级增长的。
这是因为iOS 12 之前,很多约束变化时都会重新创建一个计算引擎 NSISEnginer 将约束关 系重新加进来,然后重新计算。结果就是,涉及到的约束关系变多时,新的计算引擎需要重新计 算,最终导致计算量呈指数级增加。

上一篇 下一篇

猜你喜欢

热点阅读