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

Xcode 9 - Localization Issue Warning Storyboard

在撰写本文时,我目前正在测试 Xcode 9 beta 3。

查看情节提要时,我收到警告列表,表明在其他 languages/regions 中我的固定约束会造成问题。

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

警告是:

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 默认使用故事板 "prepared" 进行本地化。通过使用 base internationalization 进行设置,它们是 "prepared"。

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

步骤

这个过程应该适用于新旧项目。使用 Xcode 9.1

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

图片演练

Xcode 默认有故事板 "prepared" 用于本地化

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

删除文件引用

重新添加故事板

成功后您会看到 "Localize..." 按钮

如果以后想本地化

只需点击 "Localize..." 按钮并按照 Xcode 中的提示进行操作。此外,您实际上需要解决 Xcode 告诉您的警告。有多种方法可以解决它们,我推荐此 开始。

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

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

通过使用容器视图,您可以消除警告并仍然能够本地化故事板。有时即使语言要更改,您也需要具有固定宽度的标签或按钮,如果您确定固定宽度足够大,那应该不是问题,但 Xcode 不知道那,这就是你收到警告的原因 ;-)

假设您的应用未本地化,您需要在故事板中恢复 Localize 设置。我们的一个设置为英语。取消选中英文框,或您设置的任何内容。故事板位于带有语言代码的文件夹中,en 表示英语。取消选中此框会将其从项目目录中删除,因为应用程序不再寻找 en 文件夹。在 finder 文件夹中找到故事板,将其从 en 文件夹中移出,然后将其拖回项目中。确保选中目标成员资格。根据需要清洁、关闭、打开、强制退出等,您应该一切顺利!我们在一个故事板中有 360 度警告,所以很高兴解决这个问题!

一个简单的解决方案:为每个有问题的约束关闭尊重语言方向。