在撰写本文时,我目前正在测试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警告!)
答案 0 :(得分:61)
不需要警告的来源是Xcode默认为故事板“准备”进行本地化。他们通过使用base internationalization进行设置来“准备”。
要在特定的故事板中完全禁用此警告,您需要让Xcode知道故事板不应被视为可本地化。我能够做到这一点的最简单方法是将故事板文件从Base.lproj
文件夹上移一级,然后将文件重新添加到项目中。一旦我这样做,警告消失了。
此过程应适用于新旧项目。使用使用Xcode 9.1
创建的项目在Xcode 9.1上进行测试Base.lproj
文件夹上移一层通过Finder
只需点按“本地化...”按钮,然后按照Xcode中的提示操作即可。此外,您实际上需要解决Xcode告诉您的警告。有多种方法可以解决这些问题,我建议您开始使用question。
有关此过程的视频演示,请观看此screen recording
答案 1 :(得分:4)
假设您的应用未本地化,则需要恢复故事板中的“本地化”设置。我们其中一个是英语。取消选中英语框或您设置的任何内容。故事板位于包含语言代码的文件夹中,用于英语。取消选中此框将从项目目录中删除它,因为应用程序不再查找en文件夹。在finder文件夹中找到storyboard,从en文件夹中移动它,然后将其拖回到项目中。确保选中目标成员资格。必要时清洁,关闭,打开,强制戒烟等,你应该好好去!我们在一个故事板中有360个警告,所以很高兴解决这个问题!
答案 2 :(得分:2)
您还可以通过在透明视图中嵌入标签或按钮来删除“本地化问题”警告。然后从标签或按钮中删除修复宽度约束,并将其设置为该容器视图。
通过使用容器视图,您可以使警告静音,并且仍然可以本地化故事板。有时你需要一个带有固定宽度的标签或按钮,即使语言会发生变化,如果你确定固定宽度足够大,它不应该是一个问题,但Xcode不知道那就是你收到警告的原因; - )
答案 3 :(得分:1)
一个简单的解决方案:为每个有问题的约束关闭Respect Language Direction。