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

Edd*_*die 77 xcode interface-builder autolayout xcode11 xcode11.3

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

在此处输入图片说明

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

在此处输入图片说明

似乎默认值在某种程度上是 20 并且让我的观点看起来如此错误(0 与 20 相比?)

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

在此处输入图片说明

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

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

更新:

它似乎只发生在约束超级视图时。不知道如何修复tho。

2020 年 4 月 1 日更新:

Xcode11.4 修复了这个问题。

mat*_*att 41

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

当您在“弹出窗口”中填写数字时,不要输入0,而是输入0.01。这将防止数字神秘地更改为“标准”。好吧,所以0.01不一样,0但它足够接近,你无法分辨出区别,至少你以后不必回去更改它。

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

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


小智 12

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


Dav*_*e Y 11

从 Xcode 11.3.1 开始:

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

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

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

Xcode 显示的值是这样的

这似乎是非常愚蠢的行为。苹果是否有理由让它故意这样做......?

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

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


deq*_*uin 9

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

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


原答案:

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

我的两分钱。


Gon*_*par 5

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