如何从代码中关闭视图的自动布局?

时间:2013-06-27 09:16:18

标签: ios objective-c autolayout

我没有使用自动布局,因为我需要支持iOS 5.当我推动控制器时,我现在收到NSInternalInconsistencyException:

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

我对layoutSubviews 的实现调用[super layoutSubviews],所以这没有用。似乎有些东西为我的视图打开了自动布局;我想再把它关掉。然而,我所能找到的关于如何关闭它的一切都说明了这样做。我不使用IB。如何从代码关闭视图的自动布局?

更新:

此问题不重复,因为其他问题专门针对UITableViewCell子类,将translatesAutoresizingMaskIntoConstraints设置为YES或NO无效。 < / p>

2 个答案:

答案 0 :(得分:1)

要关闭视图的自动布局,请不要有任何与该视图相关的约束:

  

提供额外的兼容性,基于整个约束   在您安装约束之前,布局系统根本不活动   图。

Cocoa Auto Layout Guide。是的,这与Cocoa而不是iOS有关。但是,原则是一样的。

答案 1 :(得分:0)

我最近被添加到以自动布局启动的项目中,但我需要动态调整代码中的一些帧。这就是我所做的不会受到自动生成的运行时限制的影响(自动布局):

1)不要在界面构建器中布置视图或组件。

2)以编程方式从alloc / init开始添加您的视图并适当地设置它们的帧。

3)完成。

希望有所帮助!

PS。您还可以尝试使用以下方法从视图中剥离约束:

[view removeConstraints:view.constraints] 但我对纯代码方法有更多的好运。