1

问题

使用了一些第三方库。有些视图在translatesAutoresizingMaskIntoConstraints设置为后消失NO

在我自己的代码中,我的视图没有其他autoresizingMask设置;在库中,autoresizingMask部分代码也已被删除。相反,为这些视图设置了明确的边界/中心/框架。没有 nib 文件,视图都是以编程方式创建的。

我知道其他一些人通过设置彻底的自动布局约束来解决类似的问题,但就我而言,我的意思是关闭自动布局并手动完成。不知道何时打开自动布局。

有人说“默认情况下,当你的应用程序启动时,自动布局是关闭的,系统的行为就像在 iOS 5 及之前的版本中一样。但是如果在你的应用程序运行的任何时候,系统看到一个自动布局约束(在代码中生成)或者通过加载选中了“使用自动布局”的笔尖),自动布局系统被打开,从那时起你就在自动布局下运行。” (Matt Neuberg 编写的 iOS 6 编程,第 383-384 页),但在我的项目中,我认为没有任何自动布局约束。

代码很庞大,但必要时会上传一些骨架。

谢谢你的提示!

4

1 回答 1

2

如果您不想使用自动布局,则必须设置translatesAutoresizingMaskIntoConstraintsYES. 这是一个参考

这通过属性 translatesAutoresizingMaskIntoConstraints 起作用。当此属性为 YES(默认情况下)时,视图的自动调整大小掩码将转换为约束。例如,如果一个视图的配置如图 6-1 所示,并且 translatesAutoresizingMaskIntoConstraints 为 YES,那么约束 |-20-[button]-20-| 和 V:|-20-[button(20)] 被添加到视图的超级视图中。最终结果是,不知情的视图的行为与它们在 10.7 之前的 OS X 版本中的行为相同。

对于知道自动布局的视图,在大多数情况下,您会希望 translatesAutoresizingMaskIntoConstraints 为 NO。这是因为在给定父视图的框架的情况下,通过转换自动调整掩码生成的约束已经足以完全指定视图的框架,这通常太多了。例如,这将防止按钮在其标题更改时自动采用其最佳宽度。

于 2013-10-28T10:20:02.110 回答