Xcode 9 - "固定宽度约束可能导致剪辑"和其他本地化警告

Dav*_*e G 136 localization interface-builder ios xcode9-beta

我下载了新的Xcode,在Interface Builder中,我遇到了很多问题,例如:

固定宽度约束可能导致剪辑

它看起来像这样:

在此输入图像描述

我确实有几种语言的本地化,我理解警告,在另一种语言中标签的大小可能会改变,但我的应用程序没有这个问题.我昨天在Xcode 8中运行并测试了它,很好.我不想花费数小时的时间来添加无意义的新约束.

有建议的解决方案

Sha*_*des 164

即使我的应用程序中没有多种语言,我也会收到相同的警告,这让我发现了真正发生的事情...

这里有几件不同的事情.通过将对象间距宽度从固定宽度更改为大于或等于小于或等于,我能够在我自己的应用程序中静音固定宽度警告.

这可以通过在界面构建器中选择对象,转到尺寸检查器并在那里更改它来完成:

在此输入图像描述


或者,从文档大纲中选择约束,转到大小检查器,然后在其中进行更改:

在此输入图像描述



至于屏幕截图顶部的警告:

修复了具有中心约束的前导和尾随约束可能导致剪切

这是我自己的应用程序的屏幕截图,其中我得到完全相同的警告:

在此输入图像描述

我有一个标签,@符号设置为前导和尾随按钮,但也将中心与评级标签对齐.一旦我删除了中心对齐约束,警告消失了,但是我留下了一组布局不正确的对象.

然后,我辞职了,接受了Stack View.尽管使用起来很烦人,当你正确地获得所有约束和设置时,它会精美地展示并且没有任何警告.


编辑

正如Repose在评论中所写的那样,有时只需添加> = 0将是您所需要的,因为您确保两个元素不重叠.

  • > = 0避免了我之前遇到的重叠和固定重叠的问题,将Leading / Trailing转换为Right / Left可以解决裁剪错误。结果可能会有所不同。在开始任何软件开发之前,请咨询您的医生。 (2认同)
  • 我同意拥抱 UIStackView。这绝对是一件痛苦的事情,我试图用一些约束来做到这一点,我添加了另一个 UIStackView 并且它布局完美。 (2认同)
  • 还有其他选择 - 如果我想要我的控件为固定宽度怎么办? (2认同)

Rep*_*ose 55

您可以尝试在每个约束的基础上禁用"尊重语言方向"以使警告静音并查看是否有帮助.选择约束并打开"属性/大小"检查器.请参阅附图.

ps此解决方案适用于iOS.对于macOS,请尝试> =或<=使警告静音.

不尊重语言方向

  • 如果你已经尝试了这个并且似乎没有任何效果,请尝试退出Xcode并重新启动它.这个技巧对我有用. (4认同)
  • 它不会让我取消选择这一点. (2认同)

Pas*_*cal 30

对于本地化的标签和按钮,此警告是有意义的,您应该提供必要的约束,以便标签不重叠.如果他们现在可能在未来重叠,那么提供约束也不会有害.

Xcode可以帮助您自动添加这些约束:

在故事板的文档大纲中,单击黄色箭头,然后选择"固定前导"或"固定尾随",具体取决于文本在屏幕上的位置(左侧或右侧).这将解决大多数问题.

图片

如果您在没有任何文本(仅图像)的情况下遇到此问题,请尝试删除可能仍为该按钮设置的"默认标题":

图片

  • 在我的情况下,删除默认标题删除了警告.谢谢! (2认同)

Lio*_*ing 26

使用Labels,您可以设置Linesis 0Autoshrink属性是Minimum Font Size删除Fixed Width Constraints May Cause Clipping警告,如下所示:

在此输入图像描述

  • 是的,您只需要将行设置为0. (3认同)
  • 将行设置为 0 会导致标签根据需要扩展到尽可能多的行,这可能不是您想要的。 (2认同)

dre*_*gin 16

对于UIButton,通过将标题从plain更改为Attributed文本也解决了我的问题: -

在此输入图像描述


reo*_*sed 5

我知道这个问题已经得到了解答,但是我要解决此错误的方法是添加“纵横比”属性,然后消除宽度或高度约束,使其工作得很好并且花费更少的精力,并且我设法保持相同的输出,使我的视图适合不同的设备。