《iOS一个完整的聊天UI框架》可发送文本、表情、图片、视频、语音等消息

该博客介绍了如何集成一个完整的聊天UI框架,包括导入步骤和文件结构。核心内容涉及数据库设计,如用户表、会话表和消息表的创建与管理。此外,详细阐述了表情键盘的实现,如布局、键盘弹出处理、字符删除和输入光标管理。还讨论了消息列表的滑动优化策略,如存储行高、使用缩略图和常规优化。最后提供了下载链接。
摘要由CSDN通过智能技术生成

#效果图
效果图

#集成方式
直接导入:#import "WZMChat.h"
文件夹结构如下图:
setting.png

#数据库设计简单描述
从类型上,可分为3个表:
用户表(user)、会话表(session)、消息表(message)

从实际需求上,再进一步细分:
用户表需要两个:用户(user)和群(group); 而为了消息的优化处理,每一个私聊或群聊,都可以新建一个消息表(message)

处理逻辑如下:
1、添加好友 - 发起聊天;
2、查询对应的消息表(message)是否存在,不存在则创建;
3、向该消息表(message)插入私聊消息;
4、从会话表(session)查询对应的会话,不存在则插入,存在则更新;
5、刷新相关页面。

#表情键盘的处理
1、自定义layout,实现表情键盘的横向布局;
2、键盘弹出的时机与UITableView的偏移处理;
3、表情字符删除时的匹配处理,以及输入框光标的变化;
4、普通文本转换为表情富文本时的字符偏移,以及正则匹配效率的处理;
5、表情键盘功能模块化,与聊天界面完全分离,可直接剥离使用。

#消息列表滑动优化
1、使用model类存储行高、行宽,避免重复计算;
2、视频、图片等消息使用缩略图,减少系统开销;
3、其他常规的优化处理。

#下载地址
一个完整的聊天UI框架 - 点我下载

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ChatKit 是一个免费且开源的 UI 聊天组件,自带云服务器,自带推送,支持消息漫游,消息永久存储。底层聊天服务基于LeanCloud(原名 AVOS ) 的 IM 实时通信服务「LeanMessage」而开发,采用 Protobuf 协议进行消息传输。ChatKit 可以帮助开发者快速集成 IM 服务,轻松实现聊天功能,提供完全自由的授权协议,支持二次开发。其最大特点是把聊天常用的一些功能配合 UI 一起提供给开发者。运行效果:示例代码:由最近联系人进入聊天界面按照上面的步骤,我们可以非常方便地打开最近联系人页面。但是我们会发现,点击其中的某个联系人/聊天群组,我们并不能直接进入聊天界面。要做到这一点,我们需要给 LCChatKit 设置上事件响应函数,示例代码如下:[[LCChatKit sharedInstance] setDidSelectConversationsListCellBlock:^(NSIndexPath *indexPath, AVIMConversation *conversation, LCCKConversationListViewController *controller) {     NSLog(@"conversation selected");     LCCKConversationViewController *conversationVC = [[LCCKConversationViewController alloc] initWithConversationId:conversation.conversationId];     [controller.navigationController pushViewController:conversationVC animated:YES]; }];对于联系人列表页面,我们在 LCChatKit 可以响应如下四种操作:/*!  *  选中某个对话后的回调 (比较常见的需求)  *  @param conversation 被选中的对话  */ typedef void(^LCCKConversationsListDidSelectItemBlock)(NSIndexPath *indexPath, AVIMConversation *conversation, LCCKConversationListViewController *controller); /*!  *  设置选中某个对话后的回调  */ - (void)setDidSelectConversationsListCellBlock:(LCCKConversationsListDidSelectItemBlock)didSelectItemBlock; /*!  *  删除某个对话后的回调 (一般不需要做处理)  *  @param conversation 被选中的对话  */ typedef void(^LCCKConversationsListDidDeleteItemBlock)(NSIndexPath *indexPath, AVIMConversation *conversation, LCCKConversationListViewController *controller); /*!  *  设置删除某个对话后的回调  */ - (void)setDidDeleteConversationsListCellBlock:(LCCKConversationsListDidDeleteItemBlock)didDeleteItemBlock; /*!  *  对话左滑菜单设置block (最近联系人页面有复杂的手势操作时,可以通过这里扩展实现)  *  @return  需要显示的菜单数组  *  @param conversation, 对话  *  @param editActions, 默认的菜单数组,成员为 UITableViewRowAction 类型  */ typedef NSArray *(^LCCKConversationEditActionsBlock)(NSIndexPath *indexPath, NSArray<UITableViewRowAction *> *editActions, AVIMConversation *conversation, LCCKConversationListViewController *controller); /*!  *  可以通过这个block设置对话列表中每个对话的左滑菜单,这个是同步调用的,需要尽快返回,否则会卡住UI  */ - (void)setConversationEditActionBlock:(LCCKConversationEditActionsBlock)conversationEditActionBlock; 标签:ChatKit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九剑仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值