我将如何更改表情符号的颜色?

How would I change the color of an emoji?

我有一个表情符号,我希望它是白色的,但是当我 运行 程序时它显示为红色。如何将其更改为白色?

rating.text = "\(♥♥♥♥♥)"
rating.textColor = UIColorRGB("ffffff")

following answer 解释了为什么不能更改表情符号字符的颜色。字形本质上是图像。

如果您希望能够使用可以着色的心形符号,请尝试使用 non-Emoji 心形字符之一,例如 ♥︎

或者确保标签的字体未使用 Apple Color Emoji 字体。

我需要为一个项目执行此操作,并找到了几种方法来实现它。每个都有其局限性,但仍有一些有用的技巧需要了解。

首先,您可以在表情符号后附加 unicode text presentation selector 以使其呈现为文本,然后使用您的字体颜色。

限制:

  1. 该表情符号的文本表示可能不可用,您会得到未知的字符表示。

  2. 文字表示的细节往往比较少

或者,您可以对表情符号本身使用 CSS 滤镜来更改其色调(加上饱和度、对比度、灰度等)

限制:

  1. 需要访问页面的 css(适用于您自己的网页,但您不能,例如,在 Instagram post 中使用它)

  2. emoji图形是application-dependent,所以结果 可能无法预测。例如,firefox 上的文件夹图标是 (目前)丑陋的蓝色。我将它过滤成黄色调,但是 其他浏览器(首先呈现黄色)下面的代码将导致我试图修复的问题!

无论如何,这里有一些使用 css 和 html 方法变体的例子:

.folderitem_normal:before {
 content:'f4c2';
 margin-right:4px;
}

.folderitem_presentation_selector:before {
 color: magenta;
 content:'f4c2\FE0E';
 margin-right:4px;
}

.folderitem_css_filter:before {
 content:'f4c2';
 filter: hue-rotate(180deg) brightness(1.5);
 margin-right:4px;
}
<div class="folderitem_normal">Normal appearance of emoji for comparison (HTML &#x1f4c2;)</div>

<div class="folderitem_presentation_selector">Presentation selector.  Notice how it has been colored like normal text.  (HTML &#x1f4c2;&#xFE0E;)</div>

<div class="folderitem_css_filter">Css filter looks nice, but results are application-dependent. (HTML = N/A)</div>