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


74

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

在此处输入图片说明

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

在此处输入图片说明

而且似乎默认值是20,使我的视图看起来很错误(0比20?)

如果我通过编辑约束来解决问题,如下所示:

在此处输入图片说明

然后它将再次校正(图像在编辑了约束之后,在编辑之前显示constant = Standard

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

更新:

看来只有在约束监督时才发生。不知道如何解决。

2020年4月1日更新:

Xcode11.4修复了此问题。


2
这里同样的问题。我认为这确实是我第一次更新到11.3 UPD时出现的情况:同一项目在另一台使用相同版本xcode的计算机上没有此问题。可能与IDE配置有关,或者可能是IDE本身的错误。
Dmitrij Rogov

1
这里同样的问题。使用Xcode 11.3(11C29)。
user525504 '19

1
同一个版本11.3(11C29)
user832 '19

1
@DmitrijRogov我之前有时记得(xcode 8,9或10),那里有一个设置可以帮助我们定义standard值(因此我们可以设置10或0而不是default = 8),但是我忘记了它现在的位置。还是他们删除了该功能?
艾迪(Eddie)

5
这让我发疯
Buyin Brian

Answers:


37

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

当你在“酥料饼”的数字,而不是打字填写0,类型0.01。这样可以防止数字神秘地更改为“标准”。好的,0.01它并不相同,0但是它足够接近,以至于您无法分辨出区别,至少您不必回头再稍后对其进行更改。

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

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


1
很好的工作,谢谢!
艾迪(Eddie)

1
大!恼人的是什么这个问题可以..
华金·佩雷拉

当我使用0.01代替0时,它工作正常
Teja

但是第二次将其设置为0是可行的。为什么要打扰0.01?反正这很烦人。好东西是错误,而不是“功能”。
Vlad Rusu

11

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


对我来说,当我将其更改回0时,它的确会再次更改为“标准”。Xcode 11.3.1。
John Scalo

10

从Xcode 11.3.1开始:

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

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

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

Xcode以此显示值

看来确实是愚蠢的行为。苹果可能会故意使它这样做吗?

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


9

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

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


原始答案:

我也刚刚发现了这种现象,我尝试将约束条件乘以1,Xcode实际上尊重0值。

我的两分钱。


是的,我只是在发行说明中也注意到,做得很好。
马特

5

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


这实际上是一个不错的选择,在创建约束时在检查器中添加“ -0”将在检查器中为“ 0”,而无需去那里进行更改
busta117



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.