美文网首页
网易云信中的UIDemo架构设计

网易云信中的UIDemo架构设计

作者: Bel李玉 | 来源:发表于2020-01-12 12:33 被阅读0次

最近在工作中接触到IM类的需求,经过比较公司选择了网易云信,示例Demo可以在官网下载 https://netease.im/im-demo。 我对网易云信中的UI部分作了架构整理,首先,我们先看下整体的设计

网易云信UIDemo.png

NIMSessionViewController是聊天界面的视图控制器,主要由 NIMSessionInteractor (交互类)和 NIMSessionTableAdapter(table适配器)两部分构成。

NIMSessionInteractor

1, NIMSessionDataSource中的 主要负责数据源的获取,增,删,改,查等操作,通过NIMSessionMsgDatasource在下拉加载数据和初次加载历史数据时,通过询问是否有MessageProvider,如果有MessageProvider,就从 MessageProvider中获取数据,如果没有MessageProvider就通过NIMSDK获取NIMMessage数据,这种设计方式特别的灵活,给自定义获取数据源提供了很大的便利性。
2,NIMSessionLayout主要负责视图布局,在示例Demo中,UI视图主要由3部分组成NIMInputView,UITableView,UIRefreshControl.外界通过update:,adjustTableView,adjustInputView等方法控制视图显示。
3,NIMSessioninteractorDelegate提供数据操作完成后的一系列回调。
4, NIMSessioninteractor提供网络接口,界面操作接口,数据接口,排版接口,按钮响应接口,页面状态同步接口。

NIMSessionTableAdapter

tableAdapter主要由 NIMMessageCellFactory(cell生成器)和 NIMSessioninteractor组成,将 NIMMessageCell和交互事件绑定在一起。
1.1,NIMMessageCellFactory通过cellInTable:tableView:forMessageModel得到NIMMessageCell(所有cell的父类)。
1.2,所有的自定义cell,通过在定义 NIMMessageCellcontentView实现的,通过重写initSessionMessageContentView来获取各种自定义的cell展示
1.3,NIMMessageCell作为基类,主要负责基础的信息展示比如:重试按钮,旋转loading,用户信息,背景色等展示。

以上就是我在网易云信UIDemo 中的所得,整体看下来,各个类的功能和作用比较清晰明了,架构分层非常清晰,将一类功能和操作分散到各个类中,各司其职,在使用过程中,按照功能进行组装即刻,也有利于UI扩展和功能扩展。
感觉不错的话,请给个👍吧,😁😁😁

相关文章

网友评论

      本文标题:网易云信中的UIDemo架构设计

      本文链接:https://www.haomeiwen.com/subject/fmpiactx.html