Xcode 9 – 本地化问题警告故事板

我目前正在testingXcode 9 beta 3在写这篇文章的时候。

在查看故事板时,我收到了一个警告列表,指出在其他语言/地区,我的固定约束条件会造成问题。

应用程序相当复杂,许多视图正在遇到这些警告。

警告是:

Certain autolayout constraint combinations may result in an appropriate layout in the current development language but will pose issues in other languages and regions.

我知道该应用程序将不会在任何其他语言使用很快。

有什么办法可以把这个警告关掉吗? 这听起来很愚蠢,但我不能忍受看到我所有的意见,黄色警告图标,并在顶部(110警告!)

本地化问题

不必要的警告的来源是Xcode默认情况下,故事板“本地化”准备。 他们是通过使用基地国际化来build立起来的。

要在特定的故事板中完全禁用此警告,您需要让Xcode知道故事板不应被视为可本地化。 我能做到的最简单的方法就是将故事板文件从Base.lproj文件夹上Base.lproj一层,然后将文件重新添加到项目中。 一旦我做到了,警告就消失了。

脚步

这个过程应该适用于新旧项目。 使用Xcode 9.1创build的项目在Xcode 9.1上进行testing

  1. 通过Finder将故事板从Base.lproj文件夹上移一级
  2. 通过Xcode从您的项目中删除故事板参考
  3. 拖放(或以其他方式重新添加)故事板到您的项目
  4. 使用文件检查器validation故事板不再有基本的本地化

图画演练

Xcode默认为故事板“准备好”本地化

Xcode默认故事板文件夹结构

将故事板文件移出Base.lproj文件夹以防止出现警告

所需的文件夹结构

删除文件参考

删除文件参考

重新添加故事板

将文件拖放到项目中 在这里输入图像说明

成功后,您会看到“本地化…”button

好极了!没有更多的警告

如果你想在未来本地化

只需点击“本地化…”button,并按照来自Xcode的提示。 另外,你实际上需要解决Xcode告诉你的警告。 有各种方法来解决他们,我build议这个问题开始。

对于该过程的video演示,请观看此屏幕录制

假设您的应用程序未本地化,您需要恢复故事板中的“本地化”设置。 我们其中一个被设定为英语。 取消选中英文框,或不pipe你的设置。 故事板位于具有语言代码的文件夹中,英语为en。 取消选中此框会将其从项目目录中删除,因为应用程序不再查找en文件夹。 在finder文件夹中find故事板,将其从en文件夹中移出,然后将其拖回到项目中。 确保目标成员资格被选中。 清洁,closures,打开,强制退出等,如果有必要,你应该很好去! 我们在一个故事板上有360个警告,所以很高兴能解决这个问题!

在这里输入图像说明

您也可以通过将标签或buttonembedded到透明视图中来删除本地化问题警告。 然后从标签或button中删除修复宽度约束,并将其设置为该容器视图。

通过使用容器视图,可以使警告静音,并且仍然可以定位故事板。 有时候,即使语言要改变,你也需要一个带有固定宽度的标签或button,并且如果你确定修正宽度足够大,它不应该是一个问题,但Xcode不知道,这就是为什么你得到警告;-)

一个简单的解决scheme:closures每个有问题的约束的尊重语言方向。

请参阅https://stackoverflow.com/a/45764271/201828