3

我没有使用自动布局,因为我需要支持 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 无效。

4

2 回答 2

1

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

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

请参阅Cocoa 自动布局指南。是的,这与 Cocoa 而不是 iOS 有关。但是,原理是一样的。

于 2013-06-27T12:19:27.487 回答
0

我最近被添加到一个使用自动布局启动的项目中,但我需要在代码中动态调整一些帧。这是我所做的,以免受到自动生成的运行时约束的影响(由自动布局提供):

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

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

3) 完成。

希望有帮助!

附言。您还可以尝试从视图中剥离约束:

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

于 2014-06-18T16:43:44.853 回答