77

我曾经使用自动布局添加新约束来对超级视图/相对视图进行简单的约束,如下所示(长时间):

在此处输入图像描述

然而,最近在更新到最新的 xcode(11.3.3 或仅 11.3/11C29)后,我遇到了一个奇怪的问题:当我设置常量 = 0 时,它们总是以一种不需要的方式生成约束,如下所示:

在此处输入图像描述

似乎默认值不知何故是 20,让我的观点看起来很错误(0 与 20 相比?)

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

在此处输入图像描述

然后它会再次更正(图像是在编辑约束之后,在编辑之前显示常量 = Standard

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

更新:

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

2020 年 4 月 1 日更新:

Xcode11.4 修复了这个问题。

4

8 回答 8

41

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

在“弹出框”中填写数字时,不要键入0,而是键入0.01。这将防止数字神秘地变为“标准”。好吧,so0.01不一样,0但是它足够接近以至于你无法区分,至少你以后不必回去改变它。

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

修复了阻止在约束弹出编辑器中输入 0 常量的错误。(54076090)

于 2019-12-24T08:20:03.847 回答
12

虽然@matt 解决方法正在工作,但我只想补充一点,您可以将其设置为 0.01,然后将其更改为 0,它不会再次更改为标准值。注意:Xcode 11.3

于 2019-12-26T11:02:36.657 回答
11

从 Xcode 11.3.1 开始:

我发现的最整洁和最快的解决方案如下:

只需在-0约束字段中输入。Xcode 似乎舍弃了负面因素,并且表现正确,这比读取0.01所有内容要好。

您可以一次插入所有约束,而无需一次执行一个或稍后再进行编辑。

Xcode 将值显示为

这看起来确实是愚蠢的行为。苹果是否有理由故意让它这样做......?

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

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

于 2020-02-07T19:01:10.350 回答
9

此行为似乎已在 Xcode 11.4 上得到修复:发行说明

修复了阻止在约束弹出编辑器中输入 0 常量的错误。(54076090)


原答案:

我也刚刚发现了这种行为,我尝试将约束 1 逐个添加,Xcode 实际上尊重 0 值。

我的两分钱。

于 2019-12-27T02:58:26.493 回答
5

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

于 2020-01-07T11:01:42.187 回答
1

目前实际上没有办法解决这个问题

但最好的临时解决方案是一个一个地加上零的约束。

于 2020-01-01T17:35:40.113 回答
0

标准时忽略它。

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

那对我有用

于 2020-01-21T13:09:53.790 回答
0

仍然遇到这个错误(Xcode 11.3.1)。通过简单地将约束添加为“标准”来修复它,然后单击蓝色约束线并将尺寸检查器下的“常量”设置为 0。

于 2020-03-20T00:49:24.827 回答