跳过layou子视图以获取隐藏视图

凯格鲁内克

由于我正在开发的应用程序的设计人员,我不得不将很多东西塞进一个视图控制器中。我想我可以通过跳过调用来减轻一些CPU负担并节省一些时间

[super layoutSubviews];

在隐藏视图(并视小号我的意思的UIView的子类,包含所有其他的东西),只有刷新前视图将会出现。如果对某些人来说很重要,我可以通过设置BOOL标志来实现。这在iOS8上运行良好,但在iOS7上导致应用崩溃:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. XXX's implementation of -layoutSubviews needs to call super.'

那么,如何跳过iOS7上的layoutSubviews?

当然,有一种可能是我完全不了解iOS的工作方式,并且跳过此调用不会节省任何时间,因为它无论如何都会计算约束。在那种情况下,问题将是“如何跳过对隐藏视图的约束计算?”。

泽夫·艾森伯格

如果您放弃对iOS 7的支持,iOS 8将通过该active属性添加禁用和启用约束的功能但是,如果您需要支持iOS 7,则唯一的选择是从视图层次结构中删除视图和/或约束,并在再次需要它们时将其恢复。

但是您确定这-layoutSubviews会导致速度下降吗?在尝试对其进行优化之前,应运行类似“仪器中的时间分析器”的功能以确保确实是问题所在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章