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

时间:2017-07-11 16:19:59

标签: ios xcode storyboard interface-builder xcode9-beta

在撰写本文时,我目前正在测试Xcode 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警告!)

localization issue

4 个答案:

答案 0 :(得分:61)

不需要警告的来源是Xcode默认为故事板“准备”进行本地化。他们通过使用base internationalization进行设置来“准备”。

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

步骤

此过程应适用于新旧项目。使用使用Xcode 9.1

创建的项目在Xcode 9.1上进行测试
  1. 将故事板从Base.lproj文件夹上移一层通过Finder
  2. 通过Xcode
  3. 从项目中删除故事板参考
  4. 将故事板拖放(或以其他方式重新添加)到您的项目
  5. 使用文件检查器验证故事板不再具有基本本地化
  6. 画报演练

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

    Xcode default storyboard folder structure

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

    Desired folder structure

    删除文件参考

    Delete the file reference

    重新添加故事板

    Drag and drop the file back into the project enter image description here

    您成功后会看到“本地化...”按钮

    Yay! No more warnings

    如果您希望将来进行本地化

    只需点按“本地化...”按钮,然后按照Xcode中的提示操作即可。此外,您实际上需要解决Xcode告诉您的警告。有多种方法可以解决这些问题,我建议您开始使用question

    有关此过程的视频演示,请观看此screen recording

答案 1 :(得分:4)

假设您的应用未本地化,则需要恢复故事板中的“本地化”设置。我们其中一个是英语。取消选中英语框或您设置的任何内容。故事板位于包含语言代码的文件夹中,用于英语。取消选中此框将从项目目录中删除它,因为应用程序不再查找en文件夹。在finder文件夹中找到storyboard,从en文件夹中移动它,然后将其拖回到项目中。确保选中目标成员资格。必要时清洁,关闭,打开,强制戒烟等,你应该好好去!我们在一个故事板中有360个警告,所以很高兴解决这个问题!

enter image description here

答案 2 :(得分:2)

您还可以通过在透明视图中嵌入标签或按钮来删除“本地化问题”警告。然后从标签或按钮中删除修复宽度约束,并将其设置为该容器视图。

通过使用容器视图,您可以使警告静音,并且仍然可以本地化故事板。有时你需要一个带有固定宽度的标签或按钮,即使语言会发生变化,如果你确定固定宽度足够大,它不应该是一个问题,但Xcode不知道那就是你收到警告的原因; - )

答案 3 :(得分:1)

一个简单的解决方案:为每个有问题的约束关闭Respect Language Direction。

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