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,然后子控件有两个collectionVeiwtoolbar
  • collectionVeiw 用来显示不同的表情组,toolbar用来指示不同的表情组
  • 然后定义模型保存表情数据 EmoticonPackage 根据plist文件定义字段
  • 每一页显示固定数量的表情,最后一个cell添加一个删除按钮
  • 最后将图片表情以富文本的附件NSTextAttachment形式插入到文本中
posted @   struggle_time  阅读(244)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示