如何设置NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints?

时间:2012-07-30 12:31:58

标签: cocoa nsuserdefaults autolayout

我从Cocoa Auto Layout机制获得以下消息:

  

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

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

如何设置?

5 个答案:

答案 0 :(得分:55)

您可以按如下方式配置特定方案的设置......

1)从弹出菜单中选择方案,然后选择编辑方案...

Edit Scheme ... menu

2)在下面的下拉窗口中添加一个新条目到启动时传递的参数
复制并粘贴以下行。

-NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints YES

Edit view

答案 1 :(得分:40)

您也可以设置

目标C:

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

Swift< 3:

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

Swift 3-4.2(至少):

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

在ApplicationDidFinishLaunching中。

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

答案 2 :(得分:6)

以前的答案中有很多好的建议,但是对于你开发的每个应用都必须重复这些建议,即使是快速的一次性尝试也是如此。

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

defaults write -globalDomain NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints YES

您可以查看the man page主题的变体,例如,如果您希望它在范围上受到更多限制。

保持这种环境的一个缺点是,其他人的软件突然因为模糊的布局而突出显示 - 甚至有时来自Apple本身。

因此,您可能希望再次将其关闭。对此的命令非常简单:

defaults write -globalDomain NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints NO

并且要明确:当输入到终端时,该设置仅适用于相关机器,因此最终用户将无法获得该设置。这也意味着beta测试人员将看不到紫色阴影,这可能是您想要的也可能不是。

答案 3 :(得分:6)

Swift 3.0

UserDefaults.standard.set(true, forKey: "NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraint‌​s")

答案 4 :(得分:1)

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