EmojiText

Text 中渲染自定义表情符号。支持本地和远程表情符号。远程表情符号使用 Nuke 加载和缓存。

用法

远程表情符号

EmojiText(verbatim: "Hello :my_emoji:",
          emojis: [RemoteEmoji(shortcode: "my_emoji", url: /* URL to emoji */)])

本地表情符号

EmojiText(verbatim: "Hello :my_emoji:",
          emojis: [LocalEmoji(shortcode: "my_emoji", image: /* some UIImage or NSImage */)])

SF Symbol

EmojiText(verbatim: "Hello Moon & Starts :moon.stars:",
          emojis: [SFSymbolEmoji(shortcode: "moon.stars")])

Markdown

也支持 Markdown

EmojiText(markdown: "**Hello** *World* :my_emoji:",
          emojis: [RemoteEmoji(shortcode: "my_emoji", url: /* URL to emoji */)])

动画表情符号

警告

此功能处于 Beta 阶段,因此仅为可选项。性能可能有所不同。

目前只有 UIKit 平台支持动画表情符号。

通过将 .animated() 修饰符添加到 EmojiText 来启用动画。

EmojiText(verbatim: "GIF :my_gif:",
          emojis: [RemoteEmoji(shortcode: "my_gif", url: /* URL to gif */)])
    .animated()

支持的格式

[!INFO] 使用低功耗模式时,动画将自动暂停。要始终播放动画,即使在低功耗模式下,请将动画模式设置为 AnimatedEmojiMode.always

EmojiText(verbatim: "GIF :my_gif:",
          emojis: [RemoteEmoji(shortcode: "my_gif", url:  /* URL to gif */)])
  .animated()
  .environment(\.emojiText.AnimatedMode, .always)

配置

加载远程表情符号时,会将其替换为占位符图像。 默认值为 SF Symbol square.dashed,但您可以使用以下方式覆盖占位符图像:

.emojiText.placeholder(systemName: /* SF Symbol */)

.emojiText.placeholder(image: /* some UIImage or NSImage */)

远程表情符号使用来自 NukeImagePipeline.shared 加载它们,但您可以提供自定义的 pipeline:

.environment(\.emojiText.imagePipeline, ImagePipeline())

许可

请参阅 LICENSE