如何从代码中关闭视图的自动布局?
我没有使用自动布局,因为我需要支持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]但我对纯代码方法有更多的好运。