Xcode 11 添加新约束集零:使用设置值而不是默认/标准

Xcode 11 add new constraints set zero: use set value instead of default / standard

我曾经使用自动布局添加新的约束来对超级视图/相对视图进行简单的约束,就像这样(很长一段时间):

然而,最近在更新到最新的 xcode(11.3.3 或只是 11.3/11C29)之后,我遇到了这个奇怪的问题:当我设置常量 = 0 时,它们总是以一个不需要的方式是这样的:

默认值似乎是 20,这让我的观点看起来很不对(0 与 20 相比?)

如果我通过像这样编辑约束来解决这个问题:

然后再修正(图像是编辑约束后,编辑前显示常量= Standard

我什至不知道如何描述这个问题,但我该如何解决这个新问题 add new constraint 以使用我的愿望点而不是标准/默认值?

更新:

这似乎只发生在对超级视图进行约束时。不知道如何解决。

2020 年 4 月 1 日更新:

Xcode11.4 修复了这个问题。

似乎是一个错误(不要忘记向 Apple 提交文件)。这是一个简单的解决方法:

当您在 "popover" 中填写数字时,不要键入 0,而是键入 0.01。这将防止数字神秘地变为 "Standard"。好吧,所以 0.010 不一样,但它足够接近以至于你无法分辨,至少你以后不必返回并更改它。

编辑 Apple 表示此错误将在 Xcode 11.4 中修复:

Fixed a bug that prevented entering a 0 constant in the constraint popup editors. (54076090)

虽然@matt 解决方法有效,但我只想补充一点,您可以将其设置为 0.01,然后将其更改为 0,它不会再次更改为标准值。 注:Xcode11.3

此行为似乎已在 Xcode 11.4 上修复:release notes

Fixed a bug that prevented entering a 0 constant in the constraint popup editors. (54076090)


原答案:

我刚刚也发现了这种行为,我尝试逐一添加约束,Xcode 实际上遵守了 0 值。

我的两分钱。

其实暂时没有办法解决这个问题

但最好的临时解决方案是将带零的约束逐一添加。

我知道这不是解决方案,但对于防止您通过所有约束的临时解决方案,我刚刚发现如果您插入“-0”而不是“0”,您会得到所需的行为,但是你必须每次插入一个约束。

标准时忽略。

添加后点击约束(蓝线)和检查器来约束属性 并将其设置为 0。

对我有用

自 Xcode 11.3.1 起:

我找到的最简洁、最快的解决方案如下:

只需在约束字段中输入 -0。 Xcode 似乎丢弃了负数并且它的行为正确,这比它读取 0.01 的所有内容都要好。

您可以一次插入所有约束,而不必一次插入一个或稍后去编辑。

Xcode displays the values as this

这看起来确实很愚蠢。 Apple 有没有可能故意让它这样做的原因......?

编辑:这似乎每次都不起作用,这令人沮丧。我刚刚有一个 UIImageView 向 Superview 显示 0,但在视觉上仍处于默认值 (20)。这确实看起来像是 IB 的错误,因为这种行为完全不合逻辑。

编辑 2:现在似乎已修复 - 哇!

仍然遇到此错误 (Xcode 11.3.1)。通过简单地将约束添加为 "standard",然后单击蓝色约束线并将大小检查器下的 "constant" 设置为 0 来修复它。