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

我没有使用自动布局,因为我需要支持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这样做。 我不使用IB。 如何从代码中关闭视图的自动布局?

更新:

这个问题不重复,因为另一个问题专门针对UITableViewCell子类,并且将translatesAutoresizingMaskIntoConstraints设置为YES或NO无效。

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

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

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

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

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

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

3)完成。

希望有所帮助!

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

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