"Named colors do not work prior to iOS 11.0" 引用故事板时出错

"Named colors do not work prior to iOS 11.0" error referring to a storyboard

在为 iOS 11 以下的目标开发 iOS 应用程序时,我不小心在我的一个故事板中留下了一种命名颜色。然而,我得到的错误只显示故事板的名称,而不是导致问题的确切视图:

Named colors do not work prior to iOS 11.0
Main.storyboard

我如何找到具有命名颜色的确切视图 属性 并将其替换为未命名颜色?

  1. 将情节提要作为源代码打开。 (右键单击项目中的故事板文件 navigator/Open As/Source 代码

  2. 导航至 Find/Find 并替换...(或按 ⌥⌘F)。

  3. 打开右侧的下拉列表和select 正则表达式.

  4. 对于搜索词,输入以下正则表达式:

    color key=(.*) name=.*
    

    要替换,请输入:

    color key= red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
    

    这个正则表达式本质上是(.*)捕获color属性的键,然后用再次插入.

    请记住,此示例将颜色替换为白色。通过提供不同的 RGB 值更改颜色。

  5. 通过在第一步提到的右键菜单中导航到 打开 As/Interface Builder - Storyboard 切换回 Interface Builder。

如果您想获得命名颜色的精确浮点值,然后进行查找/替换,这样您就可以快速 "replace all" 而不是编辑每种颜色。只需在故事板中搜索 "namedColor",您就会找到正常显示的颜色,例如

<namedColor name="Grey Background">
     <color red="0.92941176470588238" green="0.93333333333333335" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>

然后使用搜索词 Find/Replace:

name="Grey Background"/>

并将以下内容复制粘贴到查找/替换的 "With" 部分:

red="0.92941176470588238" green="0.93333333333333335" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

然后点击"replace all"。不要忘记在搜索词和替换文本的末尾包含“/>”,因为这将确保故事板文档底部的 "namedColor" 部分中的名称不会被替换。

这应该会替换情节提要中与确切名称匹配的所有颜色。现在只需右键单击故事板并再次在界面构建器中打开,文件将重新编译,所有颜色看起来应该仍然相同。

注意事项:

  1. 始终确保您要么提交然后推送到您的存储库,要么至少在您对其源进行任何更改之前制作故事板文件的备份副本。
  2. 对所有可能包含命名颜色的 .xib 文件也执行相同的过程,否则您的项目将无法编译。
  3. 如果您必须在整个项目范围内更改颜色而不必为每个单独的视图更改颜色,则可以使用相同的过程。只需查找/替换您在上面粘贴的 RGB 值,这将允许您在将来为该颜色执行 "replace all"。

希望对您有所帮助!

ಠ‿ಠ

对于 cordova 项目,我修复了更新 config.xml 来自

<preference name="deployment-target"            value="10" />

<preference name="deployment-target"            value="12" />

只需在目标和项目的构建设置中将最小部署目标设置为 11.0 或更高。它将解决问题。