网易云信中的UIDemo架构设计

最近在工作中接触到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扩展和功能扩展。
感觉不错的话,请给个👍吧,😁😁😁

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 5,198评论 0 1
  • 好好的8天川藏硬是被整成6天了。 从前天晚上开始进入3群观战12位大神挑战天路,到今天第三天了,时不时进群看看赛况...
    七月紫苏阅读 891评论 0 0
  • LEAD的年会办的真心不错。大家积极参与,融入其中。舞蹈真美。歌好听。现场布置好有创意。赞不绝口。LEAD的员工一...
    是Penny阅读 1,072评论 0 0
  • 友谊会建立,友谊也会消散;感情会增加,感情也会减弱。人就像河流一样,是个动态的过程,不是一个静态的过程。我们碰到优...
    有灵且美阅读 1,176评论 0 1
  • 真是个无标题文章,想了好久了也不知今天第一篇文章写点啥。想起个名字叫“加入好报写作群的目的及感想”,怎么都觉...
    二吃阅读 1,677评论 2 0