环信 - 进阶篇之自定义cell(一)

环信 - 进阶篇之自定义cell(二)  

更新:(1)缩略图宽度不够导致定制cell内控件挤压 -2017.06.29

现在的即时通讯,普通的聊天越来越难以满足变态的需求了,这里加个按钮、这里加个时间、那里加个禁言、那里加个匿名私聊......

今天就给大家介绍下怎么对cell中的各种需求的定制处理

大家觉得满意的请点个❤️❤️

例:我就拿之前帮人解决的一个案例来讲解方法及实现,大家可以借鉴处理的过程及思路,如有不妥之处,请大家及时留言告知,谢谢。

效果图

类型一:在现有会话cell上修改UI效果

类似于上面给出的截图,我们有时候需要对环信官方给出的cell进行些许的调整。例如:项目中加入了不同于普通群聊或者聊天室的功能需求

话题聊天室

点击话题聊天,大家加入聊天室,这里发出的各种就是不同于普通聊天,普通的聊天只需展示文字、地址、图片等等,但是这里的需求是得加上时间、私聊按钮,没砍需求之前是还有点赞和取消赞的按钮。

案例

我们在普通聊天的基础上新建几个cell,文字、语音、图片、地图等等,不能和原有的普通cell混合起来,因为需求有普通聊天。

定制cell


EaseBubbleView

直接把普通聊天cell中的代码拷贝过来,再在此基础上进行cell的UI自定义处理,就拿文字聊天时的处理情况为例:

1、拷贝复制原有普通聊天cell内的代码

2、把需要的新增的UI控件初始化

3、适配各类控件

4、传值及赋值

5、新增按钮点击和本身cell的点击效果处理(别和cell上的点击效果混到一起)

6、耐心调整cell上UI效果

以上基本就是简单的自定义cell步骤了,有基础的小伙伴看下步骤应该就有思路了


类型二:类似于红包和名片Cell的UI效果

通常在我们项目中,并不只有文字、图片等等这些简单的聊天内容,有时候我们需要把自己的信息作为一张名片发给对方、发个红包给好朋友、发一个项目中的一个模块介绍给对方等等功能要求。

范例

我们就拿雷哥的这张假名片为例:😂😂😂😂😂😂😂😂😂😂😂😂

/*!

@method

@brief 新增一个新的功能按钮

@discussion

@param image 按钮图片

@param highLightedImage 高亮图片

@param title 按钮标题

@result

*/

- (void)insertItemWithImage:(UIImage*)image

highlightedImage:(UIImage*)highLightedImage

title:(NSString*)title;

/*!

@method

@brief 修改功能按钮图片

@discussion

@param image 按钮图片

@param highLightedImage 高亮图片

@param title 按钮标题

@param index 按钮索引

@result

*/

- (void)updateItemWithImage:(UIImage*)image

highlightedImage:(UIImage*)highLightedImage

title:(NSString*)title

atIndex:(NSInteger)index;

/*!

@method

@brief 根据索引删除功能按钮

@discussion

@param index 按钮索引

@result

*/

- (void)removeItematIndex:(NSInteger)index;

新增的功能

因为我们不好去修改环信的会话类型

*  消息体类型

typedef enum{

EMMessageBodyTypeText  = 1,    /*! \~chinese 文本类型 \~english Text */

EMMessageBodyTypeImage,        /*! \~chinese 图片类型 \~english Image */

EMMessageBodyTypeVideo,        /*! \~chinese 视频类型 \~english Video */

EMMessageBodyTypeLocation,      /*! \~chinese 位置类型 \~english Location */

EMMessageBodyTypeVoice,        /*! \~chinese 语音类型 \~english Voice */

EMMessageBodyTypeFile,          /*! \~chinese 文件类型 \~english File */

EMMessageBodyTypeCmd,          /*! \~chinese 命令类型 \~english Command */

}EMMessageBodyType;

如果环信把这个开放出来,或许我们就更加简单了我们只需自己修改成自己对应的类型即可。但是这个目前就想想,所以我们可以在以上类型中找一个出来,在它的基础上做些文章,变成我们想要的类型。

红包和名片最像什么。。。。对,不就和图片差不多嘛,不过小伙伴也不要以为只能拿图片来做文章,其他的我们都可以拿来用,这里就拿文字类型来作为例子(原理都一样)。

名片类型

这里我们只简要介绍怎么根据会话类型来显示名片,具体传值等怎么做,有基础的小伙伴应该都懂,不懂的小伙伴见文章底部。

1、我们需要在发送名片时,在拓展消息里面存一个名片的字段,这个字段可以被用来判断是名片、红包等等。

2、名片、红包等等中内容,同样也存在拓展属性中(这里不做过多介绍)

3、我们在展示自己的消息和接收到对方的消息时,在文字类型的基础上再进一步判断是什么类型,加载对应类型的视图,如果是红包就加载红包的view,如果是名片就展示名片view......

加载不同类型的cell

好了,以上就是我们所要介绍的两种不同类型cell的处理办法。

以下是补充自定义cell时遇到的各种情况及处理:

1、cell上语音、图片等原始点击和新增按钮点击冲突处理:

注释掉原有的点击方法,把原有的点击方法放到具体的控件上去,避免cell上多个控件点击的冲突

重点:记得把气泡上的点击权限打开

_backgroundImageView.userInteractionEnabled = YES;

解决点击冲突

2、cell上语音气泡长度的改变,避免过段影响布局

我们只需把原有语音上的语音长度Label距语音图片控件调大一点距离就能自动把语音类气泡拉长。(其他类型一样处理原理)

语音气泡拉长

3、因新增控件导致在原有cell上高度的变化处理

/*! @method @brief 根据消息的内容,获取当前cell的高度 @discussion @param model        消息对象model @result 返回cell高度 */

+ (CGFloat)cellHeightWithModel:(id)model

在原cell高度处理的情况下,根据各种类型的判断进行cell高度的自适应。

cell高度处理

4、文字类型气泡长度的处理

我暂时的处理方法:判断输入的文字长度,加入文字长度小于10,我会在后面自动补全5个空格,被动撑长气泡的长度。

假如小伙伴们有更好的建议也可以留言

5、缩略图宽度不够导致定制cell内控件挤压

全局搜索kEMMessageImageSizeHeight这个字段,修改宽度即可。

6、。。。。。。

暂时没有想到要公布出的处理方法,如果小伙伴们有遇到的问题,可以及时在下方留言,如果我遇到过并处理过的会及时更新处理方法,谢谢大家。

如果大家伙有自己的处理方法及见解也可以提出来,我会收录下来并且著名出自来源。

(1)iOS 环信(3.1.5)快速集成单聊、群聊、视频及语音通话-新手

(2)iOS 环信昵称、头像、群头像、群名称处理

(3)购物车的逻辑及处理

(4)iOS 下拉上划导航栏变化处理详解 + 头视图放大

(5)购物首页类型界面原理及实现 - 初稿

  、、、、、、、、、、、、、、、、、、、

有问题或者不理解的可以找我 ------ qq:1804094055 


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,391评论 25 707
  • ————献给北方的冬天 难道我们不记得曾经雪花儿盖满山坡难道我们不渴望在冰上自由的滑翔难道我们不难过鸟儿不再从我们...
    采漪阅读 277评论 2 3
  • 你好,陌生人,这里是甘肃兰州,现在是北京时间18:52,我正在公交上,不知怎么车上人很少。天还是很亮,窗外两边的风...
    1米半半阅读 263评论 1 3
  • 你像暖阳,又像弯月。 你曾在阳光明媚的日子里,光芒万丈,照亮了哀怨的心房。 又曾在华灯初上的夜色里,月光皎洁,安静...
    6f3e65e086c5阅读 504评论 0 1
  • 书摘 心得 按照作者的观点,曾经的自己也患过心理疾病。有一段时间,特别的特立独行,还天真的以为这就是自己的个性。不...
    金黄的麦穗阅读 530评论 1 0