如何通过编程关闭iOS 7的自动布局功能

4

我已经知道当我们使用Interface Builder时,可以通过取消“文件检查器”>“Interface Builder文档”>“使用自动布局”来关闭它。

但是,在我的情况下,我不使用Interface Builder或Storyboard,而只是使用以编程方式创建的视图。那么,如何在Xcode 5中为iOS 7关闭自动布局呢?

如何从代码中关闭视图的自动布局?告诉我们,如果我们没有为任何视图创建约束,则会关闭自动布局。我不确定如何创建约束,所以我不知道是否做了一些错误导致自动布局打开。我想关闭自动布局。

2个回答

9
当您程序化创建UIView时,没有任何布局约束被定义。您需要手动添加它们。 如果您对某个视图配置了一些布局约束,则可以像这样删除它们:
[view removeConstraints:view.constraints]

1
给@ThomasKeuleers,但我没有在任何视图中添加任何约束条件。我听说translatesAutoresizingMaskIntoConstraints的默认值为YES,也许一些自动调整掩码会变成约束条件。但是这种变化只有在至少约束条件打开时才会发生... - George
给@ThomasKeuleers,我如何强制关闭自动布局?我可以做到以下所有操作吗:(1)删除所有视图的约束;但我不知道何时执行此操作,在viewDidLoad中吗?(2)将translatesAutoresizingMaskIntoConstraints设置为NO以适用于所有视图;我也不知道何时设置它。(3)将autoresizesSubviews设置为NO以适用于所有视图;我也不知道何时设置它。 - George
@congliu 好的,我的帖子只是描述了如果有任何限制如何删除它们。我发现另一篇帖子,其中有人声称已经找到了解决你问题的方法https://dev59.com/CGgu5IYBdhLWcg3wYGG3#15242064 - Thomas Keuleers
给@ThomasKeuleers,最终我找到了一个解决自动布局问题的方法:http://stackoverflow.com/questions/19785071/scroll-bar-of-ios-web-view-change-into-half-of-it-should-be/19793515#19793515 - George
@congliu,我很高兴你解决了这个问题 :) 感谢你提供的解决方案信息! - Thomas Keuleers

7

因此,这个答案被 Andrew Barber 删除了,但它是一个很好的解决方法,非常有用,所以我再次发布它:

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

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

3)完成。

希望能对您有所帮助!

提示:您还可以尝试使用以下代码从视图中删除约束:

[view removeConstraints:view.constraints],但我更喜欢纯代码的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接