跳过布局隐藏视图的视图

时间:2014-09-26 15:00:55

标签: ios objective-c autolayout

由于我正在开发的应用程序的设计者,我必须将很多东西塞进一个视图控制器中。我想我会减少一些CPU压力并通过跳过调用来节省一些时间

[super layoutSubviews];
隐藏视图上的

(并且是视图 s 我的意思是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如何工作,跳过此调用不会节省任何时间,因为它无论如何都会计算约束。在这种情况下,问题是“如何跳过计算隐藏视图的约束?”。

1 个答案:

答案 0 :(得分:0)

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

但你确定-layoutSubviews导致经济放缓吗?在尝试优化它之前,你应该运行类似仪器中的Time Profiler之类的东西来确保真正的问题。