【问题标题】:How to programmatically turn off iOS 7 auto layout如何以编程方式关闭 iOS 7 自动布局
【发布时间】:2013-11-16 06:24:51
【问题描述】:

我已经知道我们可以通过取消选中 File Inspector > Interface Builder Document > Use Auto Layout 来关闭它,当我们使用 interface builder 时。

但就我而言,我不使用界面构建器或情节提要,只使用编程创建的视图。那么如何使用 Xcode 5 关闭 iOS 7 的自动布局?

How do I turn off Auto Layout for a view from code? 告诉我们如果我们不为任何视图创建任何约束,自动布局将被关闭。我不确定如何创建约束,所以如果我犯了一些导致自动布局打开的错误,我就不知道了。我想关闭自动布局。

【问题讨论】:

    标签: ios7 autolayout


    【解决方案1】:

    当您以编程方式创建 UIView 时,没有定义任何布局约束。您必须手动添加它们。 如果您确实为某个视图配置了一些布局约束,则可以像这样删除它们:

    [view removeConstraints:view.constraints]
    

    【讨论】:

    • 致@ThomasKeuleers,但我没有在任何视图中添加任何约束。我听说translatesAutoresizingMaskIntoConstraints 默认为YES,也许一些自动调整掩码更改为约束。但是,当至少通过约束打开自动布局时,就会发生这种变化......
    • 致@ThomasKeuleers,如何强制关闭自动布局?我能做到所有这些吗:(1)删除所有视图的所有约束;但我不知道什么时候做,viewDidLoad? (2) 将translatesAutoresizingMaskIntoConstraints 设置为NO 用于所有视图;也不知道什么时候设置。 (3) 将所有视图的autoresizesSubviews 设置为NO;也不知道什么时候设置。
    • @congliu 好的,我的帖子只描述了删除约束(如果有的话)。我发现另一个帖子有人声称找到了解决您的问题的方法stackoverflow.com/questions/11368440/…
    • 致@ThomasKeuleers,我终于找到了解决自动布局问题的方法:stackoverflow.com/questions/19785071/…
    • @congliu 很高兴你这样做了 :) 感谢您提供有关如何解决它的信息!
    【解决方案2】:

    所以这个答案被 Andrew Barber 删除了,但它是一个可靠的解决方法,它很有帮助,所以我再次发布它:

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

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

    3) 完成。

    希望有帮助!

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      相关资源
      最近更新 更多