"指定的颜色在iOS 11.0之前不起作用"错误指的是故事板

Tam*_*gel 11 interface-builder ios

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

错误,文本转录:见下文

在iOS 11.0
Main.storyboard 之前,命名颜色不起作用

如何找到具有命名颜色作为属性的确切视图并替换具有非命名颜色的视图?

Tam*_*gel 25

  1. 打开故事板作为源代码.(右键单击Project导航器/ Open As/Source Code中的storyboard文件)

    打开/源代码

  2. 导航到查找/查找和替换...(或按⌥⌘F).

  3. 打开右侧的下拉列表,然后选择正则表达式.

    用于切换

    从下拉列表中选择正则表达式

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

    color key=(.*) name=.*
    

    如需更换,请输入:

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

    这个正则表达式基本上捕获color属性的键,(.*)并再次插入它$1.

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

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

  • 更改更容易,展开所有视图(从顶部开始,然后单击向右箭头,向下箭头,向右箭头,向下箭头),然后查找背景颜色或描述中具有名称的颜色(命名颜色)。然后单击下拉列表,然后单击“其他...”,然后点击圆形的颜色预览方块。然后它将用相同的颜色替换您的命名颜色。我感到奇怪的是,Apple在11之前的iOS版本中不支持IB中的命名颜色。没有理由不起作用。 (2认同)

chi*_*aos 10

对于cordova项目,我修复了从

<preference name="deployment-target"            value="10" />
Run Code Online (Sandbox Code Playgroud)

<preference name="deployment-target"            value="12" />
Run Code Online (Sandbox Code Playgroud)


Nic*_*ten 6

如果您想获得命名颜色的精确浮点值,然后执行查找/替换,以便您可以快速“替换全部”,而不是编辑每个单独的颜色。只需在故事板中搜索“namedColor”,您就会找到正常显示的颜色,例如。

<namedColor name="Grey Background">
     <color red="0.92941176470588238" green="0.93333333333333335" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
Run Code Online (Sandbox Code Playgroud)

然后使用搜索词进行查找/替换:

name="Grey Background"/>
Run Code Online (Sandbox Code Playgroud)

并将以下内容复制粘贴到“查找/替换”的“包含”部分:

red="0.92941176470588238" green="0.93333333333333335" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
Run Code Online (Sandbox Code Playgroud)

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

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

注意事项:

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