它是做什么的?
Emojica 允许您用 自定义表情 替换 iOS 应用中的标准表情。适用于 UILabel
和 UITextView
。
只需按照以下说明操作,导入您的自定义图片集,您就可以开始了。
特性
- 兼容所有 iOS 13 表情符号
- 与任何图像集一起工作1
- 即使在图像集不完整的情况下也安全使用2
- 直接在
textViewDidChange(_:)
上转换输入 - 将转换后的字符串恢复到原始表示形式
2. 使用原始表情符号作为后备。
需求
- Xcode 11
- iOS 13.0+
- 以下版本尚未测试,尽管框架可能在较低版本上运行无误。
- Swift 5
- 在 Objective-C 项目中使用此框架可能需要对源代码进行一些修改。可能在未来的某个时刻添加 Objective-C 支持。
安装
CocoaPods
- 将pods添加到您的
Podfile
target '...' do
pod 'Emojica'
end
- 导航到您的项目目录中并安装/更新
$ cd /Path/To/Your/Project/ && pod install
手动安装
- 克隆仓库,并将
Emojica.xcodeproj
拖拽到 Xcode 项目的层级结构中。 - 选择您的项目,然后在 靶机 下选择您的应用程序靶机。
- 在 常规 选项卡下,单击 嵌入式二进制 下的 +。
- 选择
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 | 准备 |
1. U+2640, U+2642 和 U+2695 以及包含这些字符的序列不受支持。注意:最新的EmojiOne和Noto集合已经有一段时间没有检查了。
示例项目
示例 EmojicaExample.xcodeproj
已设置,但不包含图像。要对项目进行测试,请将您的表情图图像添加到 Images
组,并运行。
准备
警告:运行脚本将覆盖图像名称,因此请不要在唯一的图像集上运行脚本!
某些图像集在用途之前可能需要略作修改。如果您正在使用标记为“准备”的图像集,请在兼容图像集表中检查,并遵循这些说明。
rename.sh
复制/移动到包含您的图像集的文件夹中。
1. 将所包含文件 2. 打开你喜欢的终端。
3. 进入目录
$ cd /Path/To/Your/ImageSet/
4. 运行脚本
$ sh rename.sh
联系
您可以在Twitter上找到我,账户是@xoudini,或者通过[邮箱加密内容]发送电子邮件。
欢迎反馈和提问,为漏洞、问题或功能请求创建一个问题。
如果您在您的项目中使用了Emojica,请与我联系。我很乐意检查一下!
许可证
Emojica 采用 Apache 许可证 2.0 发布。