Skip to content

ActuallyTaylor/EmojiText

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EmojiText

Render Custom Emoji in Text. Supports local and remote emojis. Remote emojis are loaded and cached using Nuke

Usage

Remote emoji

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

Local 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

Also supports Markdown

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

Animated Emoji

Warning

This feature is in beta and therefore is opt-in only. Performance may vary.

Currently only UIKit platforms support animated emoji.

Enable animation by setting adding the .animated() modifier to EmojiText.

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

Supported formats:

  • APNG
  • GIF
  • WebP

[!INFO] The animation will automatically pause when using low-power mode. To always play animations, even in low-power mode set the animation mode to AnimatedEmojiMode.always

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

Configuration

Remote emojis are replaced by a placeholder image when loading. Default is the SF Symbol square.dashed but you can overide the placeholder image with

.placeholderEmoji(systemName: /* SF Symbol */)

or

.placeholderEmoji(image: /* some UIImage or NSImage */)

Remote emojis use ImagePipeline.shared from Nuke to load them, but you can provide a custom pipeline with

.environment(\.emojiImagePipeline, ImagePipeline())

License

See LICENSE

About

Render Custom Emoji in Text

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%