由于我正在开发的应用程序的设计人员,我不得不将很多东西塞进一个视图控制器中。我想我可以通过跳过调用来减轻一些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] 删除。
我来说两句