我怎样才能提高性能

时间:2018-01-06 12:49:32

标签: ios uiview swift4 nslayoutconstraint

我的应用程序有一个基本上由复杂网格组成的视图。大约有1400个子视图。在“现代”设备上,过渡到这个视图是相当顺利的 - 如果你正在寻找它,你会注意到一点延迟。 在诸如iPhone 6的“旧设备”上,延迟更加明显。加载屏幕大约需要一两秒钟。

我之前使用UIStackViews来组织UIViews,但这太慢了。现代设备需要大约一秒钟和更旧的设备大约5秒钟。我将整个布局更改为仅使用常规的旧布局约束来实现上述速度。

视图和约束都是在代码中实现的 - 这里没有故事板。我没有得到任何警告或错误。视图基本上只包含具有不同背景和偶尔标签的视图本身 - 没有像图像或其他渲染密集型对象那样花哨。

我还尝试将视觉格式NSLayoutConstraints的数量减少到最低限度。

有没有办法让我测试哪些对象/视图/约束花费最多的时间来渲染?我尝试使用时间分析器,但无法检测到任何缓慢的进程。或者这基本上只是这么多物品的包袱?

感谢有关我可以在哪里寻找的任何提示 - 约瑟夫

1 个答案:

答案 0 :(得分:0)

Autolayout价格昂贵。你无法将它用于这种复杂的观点。 所以不要使用autolayout。不要使用约束。

以编程方式执行所有布局代码 - (void)viewDidLayoutSubviews (记得打电话给超级) 设置视图的帧。

如果您不需要滚动或交互或旋转支持,您可以考虑将所有UI绘制到位图中,并仅显示位图。这是最快的方式。