最近在工作中接觸到IM類(lèi)的需求,經(jīng)過(guò)比較公司選擇了網(wǎng)易云信阁危,示例Demo可以在官網(wǎng)下載 https://netease.im/im-demo丑婿。 我對(duì)網(wǎng)易云信中的UI部分作了架構(gòu)整理朽们,首先的烁,我們先看下整體的設(shè)計(jì)
NIMSessionViewController
是聊天界面的視圖控制器,主要由 NIMSessionInteractor
(交互類(lèi))和 NIMSessionTableAdapter
(table適配器)兩部分構(gòu)成。
NIMSessionInteractor
1, NIMSessionDataSource
中的 主要負(fù)責(zé)數(shù)據(jù)源的獲取陪拘,增厂镇,刪,改左刽,查等操作捺信,通過(guò)NIMSessionMsgDatasource
在下拉加載數(shù)據(jù)和初次加載歷史數(shù)據(jù)時(shí),通過(guò)詢問(wèn)是否有MessageProvider
,如果有MessageProvider
,就從 MessageProvider
中獲取數(shù)據(jù)悠反,如果沒(méi)有MessageProvider
就通過(guò)NIMSDK
獲取NIMMessage
數(shù)據(jù)残黑,這種設(shè)計(jì)方式特別的靈活,給自定義獲取數(shù)據(jù)源提供了很大的便利性斋否。
2梨水,NIMSessionLayout
主要負(fù)責(zé)視圖布局,在示例Demo中茵臭,UI視圖主要由3部分組成NIMInputView
,UITableView
,UIRefreshControl
.外界通過(guò)update:
,adjustTableView
,adjustInputView
等方法控制視圖顯示疫诽。
3,NIMSessioninteractorDelegate
提供數(shù)據(jù)操作完成后的一系列回調(diào)旦委。
4奇徒, NIMSessioninteractor
提供網(wǎng)絡(luò)接口,界面操作接口缨硝,數(shù)據(jù)接口摩钙,排版接口,按鈕響應(yīng)接口查辩,頁(yè)面狀態(tài)同步接口胖笛。
NIMSessionTableAdapter
tableAdapter主要由 NIMMessageCellFactory
(cell生成器)和 NIMSessioninteractor
組成,將 NIMMessageCell
和交互事件綁定在一起宜岛。
1.1长踊,NIMMessageCellFactory
通過(guò)cellInTable:tableView:forMessageModel
得到NIMMessageCell
(所有cell的父類(lèi))。
1.2萍倡,所有的自定義cell身弊,通過(guò)在定義 NIMMessageCell
的contentView
實(shí)現(xiàn)的,通過(guò)重寫(xiě)initSessionMessageContentView
來(lái)獲取各種自定義的cell展示
1.3列敲,NIMMessageCell
作為基類(lèi)阱佛,主要負(fù)責(zé)基礎(chǔ)的信息展示比如:重試按鈕,旋轉(zhuǎn)loading戴而,用戶信息瘫絮,背景色等展示。
以上就是我在網(wǎng)易云信UIDemo 中的所得填硕,整體看下來(lái),各個(gè)類(lèi)的功能和作用比較清晰明了,架構(gòu)分層非常清晰扁眯,將一類(lèi)功能和操作分散到各個(gè)類(lèi)中壮莹,各司其職,在使用過(guò)程中姻檀,按照功能進(jìn)行組裝即刻命满,也有利于UI擴(kuò)展和功能擴(kuò)展。
感覺(jué)不錯(cuò)的話绣版,請(qǐng)給個(gè)??吧胶台,??????