Emojica 0.9.6

Emojica 0.9.6

测试已测试
语言语言 SwiftSwift
许可证 Apache-2.0
发布最后发布2020 年 6 月
SPM支持 SPM

Dan Lindholm 维护。




Emojica 0.9.6

emojica

Emojica – 一款用于在字符串中使用自定义表情的 Swift 框架。

gif

它是做什么的?

Emojica 允许您用 自定义表情 替换 iOS 应用中的标准表情。适用于 UILabelUITextView

只需按照以下说明操作,导入您的自定义图片集,您就可以开始了。

特性

  • 兼容所有 iOS 13 表情符号
  • 与任何图像集一起工作1
  • 即使在图像集不完整的情况下也安全使用2
  • 直接在 textViewDidChange(_:) 上转换输入
  • 将转换后的字符串恢复到原始表示形式
1. 命名应遵循与兼容图像集类似的模式。
2. 使用原始表情符号作为后备。

需求

  • Xcode 11
  • iOS 13.0+
    • 以下版本尚未测试,尽管框架可能在较低版本上运行无误。
  • Swift 5
    • 在 Objective-C 项目中使用此框架可能需要对源代码进行一些修改。可能在未来的某个时刻添加 Objective-C 支持。

安装

CocoaPods

  1. 将pods添加到您的Podfile
target '...' do
    pod 'Emojica'
end
  1. 导航到您的项目目录中并安装/更新
$ cd /Path/To/Your/Project/ && pod install

  手动安装

  1. 克隆仓库,并将 Emojica.xcodeproj 拖拽到 Xcode 项目的层级结构中。
  2. 选择您的项目,然后在 靶机 下选择您的应用程序靶机。
  3. 常规 选项卡下,单击 嵌入式二进制 下的 +
  4. 选择 Emojica.frameworkiOS,然后按下 添加 完成操作。

如果 Xcode 在您的 import 语句处给出 "没有此类模块 'Emojica'" 的编译错误,只需构建一次您的应用程序(或框架)。另外,每次您清理项目(⇧⌘K)时,Xcode 都会提示相同的错误,解决方案相同。

使用

import Emojica

实例化

let emojica = Emojica()

// Creates an instance with a font.
let emojica = Emojica(font: UIFont.systemFont(ofSize: 17.0))

配置实例

  • 设置字体:

    emojica.font = UIFont.systemFont(ofSize: 17.0)

如果没有设置字体,将使用系统字体。

  • 设置大小:

    emojica.pointSize = 17.0

如果您对默认的字体满意,可以直接设置大小。默认的pointSize值是17.0。

  • 设置最小代码点宽度:

注意:仅当使用一个Emojica无法处理的自定义图像集时才使用此选项。

emojica.minimumCodePointWidth = 4

一个介于0到8之间的值,用于设置代码点字符串的最小宽度,以便正确找到自定义表情符号的图像。字符0用于填充。

为了找到一个合适值,找到例如©(U+00A9 COPYRIGHT SIGN)的图像,并使用该图像名称的长度——a9.png的宽度为2,00a9.png的宽度为4,等等。

  • 设置分隔符:

注意:仅当使用一个Emojica无法处理的自定义图像集时才使用此选项。

emojica.separator = "~"

在组合代码点图像名称中使用的分隔符。

  • 设置项目中使用的图像集:

    emojica.imageSet = .default

自动配置特定于图像集的设置。

  • 禁用修饰符符号:

    emojica.useModifiers = false

删除完整修饰符序列中的所有修饰符符号

  • 启用表情符号的撤销:

注意:如果转换后不需要原始字符串,请保持实例不可撤销。

emojica.revertible = true

启用包含自定义表情符号的字符串撤销为原始状态。

转换字符串

let sample: String = "Sample text 😎"

let converted: NSAttributedString = emojica.convert(string: sample)

撤回字符串

注意:实例必须设置为 可撤回true

let reverted: String = emojica.revert(attributedString: converted)

使用转换后的字符串

let textView = UITextView()

...

let flag: String = "🇫🇮 "

textView.attributedText = emojica.convert(string: flag)

直接转换文本输入

您可以通过实现 UITextViewDelegate 接口中的 textViewDidChange(_:) 方法并传递更改后的 UITextView 到同名 Emojica 方法来直接转换文本输入。

func textViewDidChange(_ textView: UITextView) {
    emojica.textViewDidChange(textView)
}

兼容的图像集

以下图像集已测试,但其他图像集也可能表现良好。如果您有一个图像集应该添加到Emojica,请创建一个问题

集合 版本 说明
Twemoji v13.0 准备
EmojiOne  2.2.7    缺失码位1
Noto Emoji 1.05 准备

注意:最新的EmojiOne和Noto集合已经有一段时间没有检查了。

1. U+2640, U+2642 和 U+2695 以及包含这些字符的序列不受支持。

示例项目

示例 EmojicaExample.xcodeproj 已设置,但不包含图像。要对项目进行测试,请将您的表情图图像添加到 Images 组,并运行

准备

警告:运行脚本将覆盖图像名称,因此请不要在唯一的图像集上运行脚本!

某些图像集在用途之前可能需要略作修改。如果您正在使用标记为“准备”的图像集,请在兼容图像集表中检查,并遵循这些说明。

1. 将所包含文件 rename.sh 复制/移动到包含您的图像集的文件夹中。

2. 打开你喜欢的终端。

3. 进入目录

$ cd /Path/To/Your/ImageSet/

4. 运行脚本

$ sh rename.sh

联系

您可以在Twitter上找到我,账户是@xoudini,或者通过[邮箱加密内容]发送电子邮件。

欢迎反馈和提问,为漏洞、问题或功能请求创建一个问题

如果您在您的项目中使用了Emojica,请与我联系。我很乐意检查一下!

许可证

Emojica 采用 Apache 许可证 2.0 发布。