Xcode复选框在哪里“将面具自动调整为约束”

时间:2013-06-10 07:09:28

标签: ios xcode macos autolayout nslayoutconstraint

在其中一个WWDC 2012视频中,他们使用Autolayout演示了一个OS X应用程序,在大约7或8分钟后,他展示了如何在单个视图中取消选中属性中的一个框。 Inspector和这个框被称为“将面具自动调整为约束”。现在,我很清楚这个框的代码等效, translatesAutoresizingMaskIntoConstraints 布尔值,但我似乎无法在iOS或OS X项目中的任何位置找到此复选框。我的项目使用Autolayout。我真的很想要这个复选框,因为我在学习Autolayout(并将spring / struts应用程序转换为AL)时遇到的困难之一是Xcode为每个视图生成的百万限制,以及如何清理它们并合理地覆盖它们代码中的部分/全部。为了一次转换一个视图,我想要关闭那些自动生成的约束。

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

1 个答案:

答案 0 :(得分:27)

接口生成器(IB)中提供了该复选框,但前提是您正在开发针对OS X的Cocoa项目。对于iOS,它目前无法使用。您只能以编程方式设置它。

根据我的理解,iOS上的自动布局 - 以及其他人随时可以参与其中 - 并不是OS X上可用内容的完整实现。

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

enter image description here

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

myView.translatesAutoresizingMaskIntoConstraints = NO

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

以下是更多信息的链接,尽管您已经毫不怀疑地看了它:

Adopting Auto Layout

我要说的一件事是,如果你在开始时正在努力使用Auto Layout - 如果你不是,那么你就不会是人类,我们都是 - 但是我会坚持使用Interface Builder和想想黄金法则。对我来说最重要的是它讨厌歧义。这就像是真空。在您删除不需要的约束之前,您必须添加一个您想要的 然后删除旧的

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

坚持下去。从IB和实验中的一些简单视图开始。真的有疯狂的方法。

还有一个值得关注的链接是:

10 Things You Need To Know About Cocoa Autolayout