23

在 WWDC 2012 的一个视频 Auto Layout By Example 中,他们演示了一个使用 Autolayout 的 OS X 应用程序,在大约 7 或 8 分钟后,他展示了如何在单个视图中取消选中 Attributes Inspector 中的复选框,以及该框被称为“将自动调整掩码转换为约束”之类的东西。现在,我很清楚这个框的等效代码translatesAutoresizingMaskIntoConstraints布尔值,但我似乎在 iOS 或 OS X 项目的任何地方都找不到这个复选框。我的项目使用自动布局。我真的很喜欢这个复选框,因为我在学习 Autolayout(以及将 springs/struts 应用程序转换为 AL)时遇到的一件事是 Xcode 为每个视图生成的数百万个约束,以及如何清理它们并明智地覆盖它们一些/全部在代码中。为了一次进行一个视图的转换,我想要关闭那些自动生成的约束。

为什么我看不到这个复选框?我正在使用 Xcode 4.6。

4

1 回答 1

27

该复选框在 Interface Builder (IB) 中可用,但前提是您正在开发针对 OS X 的 Cocoa 项目。对于 iOS,它目前不可用。您只能以编程方式设置它。

根据我的理解,iOS 上的自动布局(其他人可以在这里随意介绍)并不是 OS X 上可用功能的完整实现。

老实说,鉴于你事后所说的话,这个复选框可能是你不需要担心的。我认为将 OS X 项目升级到 Auto Layout 很重要,但通常对于 iOS,您不太可能混合使用其中的一个。即,您可以在文件检查器中选中 Xib 以“使用自动布局”,或者不选择。

在此处输入图像描述

也就是说,在一个用例中,您可能需要弄乱该标志。如果你想为视图创建一个独立的 Xib 文件,然后使用loadNibNamed. 这样做时,默认情况下旧样式自动调整大小约束将转换为新样式自动布局约束。通常我想添加我自己的,所以我将该标志设置为 zap 'em。

myView.translatesAutoresizingMaskIntoConstraints = NO

无论如何,这是另一个故事。

这是更多信息的链接,尽管您毫无疑问已经看过它:

采用自动布局

我想说的一件事是,如果你一开始就在使用 Auto Layout 时遇到困难——如果你不这样做,你就不是人类,我们都曾经是——那么我会坚持使用 Interface Builder 并考虑黄金法则。对我来说最重要的是它讨厌模棱两可。这就像自然界的真空。在您可以删除您不想要的约束之前,您必须添加您想要的约束,然后删除旧的约束。

我犯的另一个错误是混合自动布局和框架。所以我会做一些检查框架宽度的代码,然后将其应用于约束。糟糕的错误。这真的以泪水告终。当您进入自动布局时,必须真正忘记使用 , 等做任何CGRect事情frame

坚持下去。从 IB 中的一些简单视图开始并进行实验。疯狂是有办法的,真的。

另一个值得一看的链接是:

关于 Cocoa 自动布局你需要知道的 10 件事

于 2013-06-10T08:45:26.833 回答