在 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
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 */)
远程表情符号使用来自 Nuke 的 ImagePipeline.shared
加载它们,但您可以提供自定义的 pipeline:
.environment(\.emojiText.imagePipeline, ImagePipeline())
请参阅 LICENSE