在 xcode Colors asset 中通过十六进制代码搜索颜色

Day*_*man 9 xcode assets colors

如果资源中已经存在像 #4D4D4D 这样的颜色,我如何在 Xcode 中搜索?我尝试通过十六进制代码进行搜索,但没有显示任何内容。

Rei*_*ner 12

单独使用 Xcode 是不可能的,但使用终端命令是可能的。

\n

假设您在资源中定义了一个新的颜色集。如果打开检查器并选择此集,则可以通过十六进制模式定义颜色:
\n在此输入图像描述

\n

如果您随后在左窗格中选择此颜色,并在 Finder\xe2\x80\x9c 中选择 \xe2\x80\x9eShow,则 Finder 将显示一个文件夹,其中包含名为Contents.json. 该文件包含十六进制的 RGB 颜色:

\n
{\n  "info" : {\n    "version" : 1,\n    "author" : "xcode"\n  },\n  "colors" : [\n    {\n      "idiom" : "universal",\n      "color" : {\n        "color-space" : "srgb",\n        "components" : {\n          "red" : "0x12",\n          "alpha" : "1.000",\n          "blue" : "0x56",\n          "green" : "0x34"\n        }\n      }\n    }\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

为了找到定义为 的所有颜色#1234356,必须在资产目录中搜索包含以下所有字符串的文件:"red" : "0x12""green" : "0x34""blue" : "0x56"。但 Xcode 不允许在文件中指定此类 AND 搜索。

\n

但是,可以使用终端命令来实现这一点。这篇文章展示了许多使用grepandawk命令变体的示例,这些命令使用某种正则表达式来表达文件中的 AND 条件。这个答案中提到的一句话是:

\n
awk \'NR==FNR{a[$0];next} {for(s in a) if(!index($0,s)) exit 1}\' strings RS=\'^$\' file\n
Run Code Online (Sandbox Code Playgroud)\n

语法可能有点神秘,但它应该可以工作。

\n

为了查找资产目录中的所有文件,您必须指定该目录作为搜索路径(最简单的方法是从 Finder 中将该文件夹绘制到终端命令),并指定递归搜索。

\n

可能需要安装适当的命令,因为并非所有命令都是预先安装的。PS:我没有亲自尝试过,祝你好运!

\n