iOS表情键盘实现
表情键盘实现
@(iOS)[Swift, iOS]
- 直接自定义文本输入框的
inputView
属性,直接改成自己想要的UIView即可。 - 表情保存在本地,从沙盒中读取
emoji表情显示
- emoji对应十六进制,如果要显示的话,需要转换一下
// emoji对应十六进制
func emojiToShow(code: String) -> String {
// 创建扫描器
let scanner = NSScanner(string: code)
// 将十六进制数据转换成字符串
var result: UInt32 = 0
scanner.scanHexInt(&result)
// 字符串转换成emoji字符串
let emojiStr = Character(UnicodeScalar(result))
return String(emojiStr)
}
图片显示
- 在文本输入框里显示小图片作为表情使用
// 1、显示图片,通过富文本
let attachment = NSTextAttachment()
// 然后加载图片
attachment.image = UIImage(contentsOfFile: emoticon.imagePath!)
// 设置附件大小,稍微下移一点,图片比较答,而emoji比较小
attachment.bounds = CGRect(x: 0, y: -4, width: 20, height: 20)
// 2、根据附件创建属性字符串
let imageText = NSAttributedString(attachment: attachment)
// 3、拿到当前的所有字符串内容
let strM = NSMutableAttributedString(attributedString: self.textView.attributedText)
// 4.插入表情到当前光标所在的位置
let range = self.textView.selectedRange
strM.replaceCharactersInRange(range,withAttributedString: imageText)
// 设置附件尺寸
strM.addAttribute(NSFontAttributeName,value: UIFont.systemFontOfSize(19),range: NSMakeRange(range.location, 1))
// 5、重新赋值
self.textView.attributedText = strM
// 设置光标位置
self.textView.selectedRange = NSMakeRange(range.location + 1, 0)
总结一下表情键盘
- 首先一个
UIViewController
,然后子控件有两个collectionVeiw
和toolbar
collectionVeiw
用来显示不同的表情组,toolbar
用来指示不同的表情组- 然后定义模型保存表情数据
EmoticonPackage
根据plist文件定义字段 - 每一页显示固定数量的表情,最后一个cell添加一个删除按钮
- 最后将图片表情以富文本的附件
NSTextAttachment
形式插入到文本中
本文来自博客园,作者:struggle_time,转载请注明原文链接:https://www.cnblogs.com/songliquan/p/12784415.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?