環(huán)信 - 進(jìn)階篇之自定義cell(一)

環(huán)信 - 進(jìn)階篇之自定義cell(二)??

更新:(1)縮略圖寬度不夠?qū)е露ㄖ芻ell內(nèi)控件擠壓 -2017.06.29

現(xiàn)在的即時(shí)通訊,普通的聊天越來(lái)越難以滿足變態(tài)的需求了,這里加個(gè)按鈕、這里加個(gè)時(shí)間、那里加個(gè)禁言、那里加個(gè)匿名私聊......

今天就給大家介紹下怎么對(duì)cell中的各種需求的定制處理

大家覺得滿意的請(qǐng)點(diǎn)個(gè)????

例:我就拿之前幫人解決的一個(gè)案例來(lái)講解方法及實(shí)現(xiàn),大家可以借鑒處理的過程及思路,如有不妥之處,請(qǐng)大家及時(shí)留言告知,謝謝。

效果圖

類型一:在現(xiàn)有會(huì)話cell上修改UI效果

類似于上面給出的截圖,我們有時(shí)候需要對(duì)環(huán)信官方給出的cell進(jìn)行些許的調(diào)整。例如:項(xiàng)目中加入了不同于普通群聊或者聊天室的功能需求

話題聊天室

點(diǎn)擊話題聊天,大家加入聊天室,這里發(fā)出的各種就是不同于普通聊天,普通的聊天只需展示文字、地址、圖片等等,但是這里的需求是得加上時(shí)間、私聊按鈕,沒砍需求之前是還有點(diǎn)贊和取消贊的按鈕。

案例

我們?cè)谄胀奶斓幕A(chǔ)上新建幾個(gè)cell,文字、語(yǔ)音、圖片、地圖等等,不能和原有的普通cell混合起來(lái),因?yàn)樾枨笥衅胀奶臁?/p>

定制cell


EaseBubbleView

直接把普通聊天cell中的代碼拷貝過來(lái),再在此基礎(chǔ)上進(jìn)行cell的UI自定義處理,就拿文字聊天時(shí)的處理情況為例:

1、拷貝復(fù)制原有普通聊天cell內(nèi)的代碼

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

3、適配各類控件

4、傳值及賦值

5、新增按鈕點(diǎn)擊和本身cell的點(diǎn)擊效果處理(別和cell上的點(diǎn)擊效果混到一起)

6、耐心調(diào)整cell上UI效果

以上基本就是簡(jiǎn)單的自定義cell步驟了,有基礎(chǔ)的小伙伴看下步驟應(yīng)該就有思路了


類型二:類似于紅包和名片Cell的UI效果

通常在我們項(xiàng)目中,并不只有文字、圖片等等這些簡(jiǎn)單的聊天內(nèi)容,有時(shí)候我們需要把自己的信息作為一張名片發(fā)給對(duì)方、發(fā)個(gè)紅包給好朋友、發(fā)一個(gè)項(xiàng)目中的一個(gè)模塊介紹給對(duì)方等等功能要求。

范例

我們就拿雷哥的這張假名片為例:????????????????????????

/*!

@method

@brief 新增一個(gè)新的功能按鈕

@discussion

@param image 按鈕圖片

@param highLightedImage 高亮圖片

@param title 按鈕標(biāo)題

@result

*/

- (void)insertItemWithImage:(UIImage*)image

highlightedImage:(UIImage*)highLightedImage

title:(NSString*)title;

/*!

@method

@brief 修改功能按鈕圖片

@discussion

@param image 按鈕圖片

@param highLightedImage 高亮圖片

@param title 按鈕標(biāo)題

@param index 按鈕索引

@result

*/

- (void)updateItemWithImage:(UIImage*)image

highlightedImage:(UIImage*)highLightedImage

title:(NSString*)title

atIndex:(NSInteger)index;

/*!

@method

@brief 根據(jù)索引刪除功能按鈕

@discussion

@param index 按鈕索引

@result

*/

- (void)removeItematIndex:(NSInteger)index;

新增的功能

因?yàn)槲覀儾缓萌バ薷沫h(huán)信的會(huì)話類型

*? 消息體類型

typedef enum{

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

EMMessageBodyTypeImage,? ? ? ? /*! \~chinese 圖片類型 \~english Image */

EMMessageBodyTypeVideo,? ? ? ? /*! \~chinese 視頻類型 \~english Video */

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

EMMessageBodyTypeVoice,? ? ? ? /*! \~chinese 語(yǔ)音類型 \~english Voice */

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

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

}EMMessageBodyType;

如果環(huán)信把這個(gè)開放出來(lái),或許我們就更加簡(jiǎn)單了我們只需自己修改成自己對(duì)應(yīng)的類型即可。但是這個(gè)目前就想想,所以我們可以在以上類型中找一個(gè)出來(lái),在它的基礎(chǔ)上做些文章,變成我們想要的類型。

紅包和名片最像什么。。。。對(duì),不就和圖片差不多嘛,不過小伙伴也不要以為只能拿圖片來(lái)做文章,其他的我們都可以拿來(lái)用,這里就拿文字類型來(lái)作為例子(原理都一樣)。

名片類型

這里我們只簡(jiǎn)要介紹怎么根據(jù)會(huì)話類型來(lái)顯示名片,具體傳值等怎么做,有基礎(chǔ)的小伙伴應(yīng)該都懂,不懂的小伙伴見文章底部。

1、我們需要在發(fā)送名片時(shí),在拓展消息里面存一個(gè)名片的字段,這個(gè)字段可以被用來(lái)判斷是名片、紅包等等。

2、名片、紅包等等中內(nèi)容,同樣也存在拓展屬性中(這里不做過多介紹)

3、我們?cè)谡故咀约旱南⒑徒邮盏綄?duì)方的消息時(shí),在文字類型的基礎(chǔ)上再進(jìn)一步判斷是什么類型,加載對(duì)應(yīng)類型的視圖,如果是紅包就加載紅包的view,如果是名片就展示名片view......

加載不同類型的cell

好了,以上就是我們所要介紹的兩種不同類型cell的處理辦法。

以下是補(bǔ)充自定義cell時(shí)遇到的各種情況及處理:

1、cell上語(yǔ)音、圖片等原始點(diǎn)擊和新增按鈕點(diǎn)擊沖突處理:

注釋掉原有的點(diǎn)擊方法,把原有的點(diǎn)擊方法放到具體的控件上去,避免cell上多個(gè)控件點(diǎn)擊的沖突

重點(diǎn):記得把氣泡上的點(diǎn)擊權(quán)限打開

_backgroundImageView.userInteractionEnabled = YES;

解決點(diǎn)擊沖突

2、cell上語(yǔ)音氣泡長(zhǎng)度的改變,避免過段影響布局

我們只需把原有語(yǔ)音上的語(yǔ)音長(zhǎng)度Label距語(yǔ)音圖片控件調(diào)大一點(diǎn)距離就能自動(dòng)把語(yǔ)音類氣泡拉長(zhǎng)。(其他類型一樣處理原理)

語(yǔ)音氣泡拉長(zhǎng)

3、因新增控件導(dǎo)致在原有cell上高度的變化處理

/*! @method @brief 根據(jù)消息的內(nèi)容,獲取當(dāng)前cell的高度 @discussion @param model? ? ? ? 消息對(duì)象model @result 返回cell高度 */

+ (CGFloat)cellHeightWithModel:(id)model

在原cell高度處理的情況下,根據(jù)各種類型的判斷進(jìn)行cell高度的自適應(yīng)。

cell高度處理

4、文字類型氣泡長(zhǎng)度的處理

我暫時(shí)的處理方法:判斷輸入的文字長(zhǎng)度,加入文字長(zhǎng)度小于10,我會(huì)在后面自動(dòng)補(bǔ)全5個(gè)空格,被動(dòng)撐長(zhǎng)氣泡的長(zhǎng)度。

假如小伙伴們有更好的建議也可以留言

5、縮略圖寬度不夠?qū)е露ㄖ芻ell內(nèi)控件擠壓

全局搜索kEMMessageImageSizeHeight這個(gè)字段,修改寬度即可。

6、。。。。。。

暫時(shí)沒有想到要公布出的處理方法,如果小伙伴們有遇到的問題,可以及時(shí)在下方留言,如果我遇到過并處理過的會(huì)及時(shí)更新處理方法,謝謝大家。

如果大家伙有自己的處理方法及見解也可以提出來(lái),我會(huì)收錄下來(lái)并且著名出自來(lái)源。

(1)iOS 環(huán)信(3.1.5)快速集成單聊、群聊、視頻及語(yǔ)音通話-新手

(2)iOS 環(huán)信昵稱、頭像、群頭像、群名稱處理

(3)購(gòu)物車的邏輯及處理

(4)iOS 下拉上劃導(dǎo)航欄變化處理詳解 + 頭視圖放大

(5)購(gòu)物首頁(yè)類型界面原理及實(shí)現(xiàn) - 初稿

? 、、、、、、、、、、、、、、、、、、、

有問題或者不理解的可以找我 ------ qq:1804094055?


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容