xib製作聊天介面,xib聊天介面
仿QQ聊天布局
目前查到的資料大部分都是這樣的效果,而且設計的思路都是一樣的,
一個tableview使用一個自訂的cell,當cell成功建立以後,依靠一個中介類傳遞的資料來判斷到底是左邊還是右邊發送的資料,然後重新繪製內容或者布局。
但是對於習慣xib來說,並不擅長代碼適配和布局,遂根據思路調整
首先介面
然後是自訂的cell
雖然看起來很奇怪 但是根據思路的話這是一種簡單粗暴的方法,這個cell其實是兩邊單獨顯示時的效果合并在一起的,通過資料的中介類可以知道應該需要顯示那邊,然後隱藏另外一邊的資料顯示
dataSource.blockConfigureCell=^(CellFour* cell,Message* model) { cell.CFMessage=model; switch (cell.CFMessage.MCellSystle) { case CellSystleLeft: { cell.headimageRight.hidden=YES; cell.CFbackGroundRight.hidden=YES; cell.message.text=model.MDictionary[@"message"]; } break; case CellSystleRight: { cell.headImage.hidden=YES; cell.CFbackGroundLeft.hidden=YES; cell.messageRight.text=model.MDictionary[@"message"]; } break; default: break; } };
其實這也是很無奈的做法,開始的時候使用的是兩個自訂的cell即左邊和右邊的顯示cell是獨立開的,但是在註冊時就會產生兩個重用的標示,雖然在不進行重用的時候顯示也可以達到以上的效果,但是一旦進入了重用隊列裡面那麼就會只用最新修改的重用標示,最終的結果就是所有的樣式變成一個樣式不分左右。
然後又嘗試了一下,一個自訂的cell裡面含有兩種樣式,雖然解決了重用標示的問題,但是問題就是cell建立的問題,因為這種會在建立就決定了cell是左邊顯示的還是右邊顯示的,但是傳遞cell的中介類告訴cell
應該使用那種樣式的時候cell已經建立完成了(建立之前傳遞資料的話cell為空白就沒意義了)。就達不到動態調整的目的了。
問題暫時紀錄一下,所以兩邊如果想做到不同的顯示效果的話像qq的不同氣泡(xib會比較麻煩代碼反而會簡單一點)。