47

我从 Cocoa 自动布局机制收到以下消息:

将 NSUserDefault NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints 设置为 YES 以在发生这种情况时自动调用 -[NSWindow VisualizeConstraints:]。

但我不知道如何“将 NSUserDefault NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints 设置为 YES”。

我该如何设置?

4

5 回答 5

60

您可以为特定方案配置设置,如下所示...

1) 从弹出菜单中选择方案并选择Edit Scheme ...

编辑方案...菜单

2) 在下面的向下滑动窗口中,向Arguments Passed on Launch添加一个新条目。
复制并粘贴以下行。

-NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints YES

编辑视图

于 2012-10-30T12:25:16.880 回答
46

你也可以设置

目标 C:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints"];

斯威夫特 <3:

NSUserDefaults.standardUserDefaults().setBool(true, forKey: "NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints")

Swift 3-4.2(至少):

UserDefaults.standard.set(true, forKey: "NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints")

applicationDidFinishLaunching.

请注意,这将为您自己您的最终用户设置它,这可能不是您想要的(不要像这样投入生产!)。您可以通过在“调试”运行方案中设置参数来仅为自己设置它-NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints YES(在单独的答案中描述)。

于 2012-10-24T07:34:49.957 回答
8

以前的答案中有很多好的建议,但是对于您开发的每个应用程序都必须重复它们,即使是为了快速尝试一个想法。

如果您希望所有应用程序和所有用户默认启用它,您可以通过在终端中键入以下命令在默认数据库中设置它:

defaults write -globalDomain NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints YES

您可以查看手册页以了解主题的变体,例如,如果您希望它的范围受到更多限制。

保留此设置的一个缺点是,其他人的软件会突然因布局不明确而突出显示——即使有时来自 Apple 本身的东西也是如此。

因此,您可能希望在一段时间内再次将其关闭。该命令非常简单:

defaults write -globalDomain NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints NO

需要明确的是:在终端中输入的设置仅适用于有问题的机器,因此最终用户将无法获得该设置。这也意味着 beta 测试人员不会看到紫色阴影,这可能是也可能不是您想要的。

于 2014-04-18T15:18:22.883 回答
6

斯威夫特 3.0

UserDefaults.standard.set(true, forKey: "NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraint‌​s")
于 2016-11-02T07:18:04.373 回答
1

从命令行或 Xcode 的方案设置中运行应用程序时,只需将其作为参数添加即可。

于 2012-07-31T08:54:23.030 回答