我在Interface Builder中查看了一个笔尖。笔尖内有几个UIStackViews
,我之所以使用它是因为它很容易对齐UI元素。一位同事建议我不要使用UIStackViews
,因为从计算的角度来看它们是“昂贵的”。另一种方法是手动设置单个元素的约束。
我可以使用哪种Xcode工具来验证同事的主张,我将如何使用它?我发现最好的是this,但我希望有一些更细的东西。有问题的笔尖是UITableViewCell
。
答案 0 :(得分:2)
从计算的角度来看,它们“很昂贵”
好的,我现在尝试证明那完全是伪造的。
堆栈视图不是魔术。堆栈视图不执行任何特殊的运行时调整。堆栈视图只是一个约束制定者,仅此而已。你也是。堆栈视图所做的所有事情,您都可以做。堆栈视图产生的约束与您自己创建的约束完全相同(假设您甚至知道如何)。因此,约束本身并不昂贵,只是因为堆栈视图使它们成为约束。
因此,让我们谈谈约束的初始生成。好了,堆栈视图通过死记硬背生成其约束。这只是一种简单的公式化方法,它基于诸如堆栈视图的设置和(在某些情况下)已安排的子视图的固有内容大小之类的东西已经给出的参数。因此,实际上完全不需要花费时间即可使堆栈视图吐出它所生成的约束,并且只需执行一次即可。
因此,如果约束的生成不昂贵,并且约束本身也不昂贵,那么支出在哪里?没地方。
有人可能会争辩说,对于使用堆栈视图的特定期望结果而言,不必要的复杂或懒惰,因此,自己进行约束会“更好”。但是“昂贵”在我看来并不是可以针对堆栈视图提出的真正指控。
答案 1 :(得分:0)
在深入研究时,我发现了一个名为LayoutFrameworkBenchmark的存储库。我在iPhone 7+模拟器上运行了Xcode 12中的基准测试。我收集了数据并将其转储到Google表格中。它确实表明UIStackView
是pokey与其他布局方法相比。