首先看一下效果
Demo中使用了幾個三方
注: 查看大圖片的這個工具有點(diǎn)坑喂急,不知道是我不會使用還是原本就有bug,坑在下面的這個地方孔庭,如果不修改的話趣些,會導(dǎo)致下拉刷新的操作被屏蔽金顿,因?yàn)閛ffset距離頂部為0了臊泌,剛好被屏蔽了。
言歸正傳說Demo
cell主要由三部分組成:
第一部分是用戶基本信息和文字評論區(qū)域揍拆,第二部分是圖片顯示部分渠概,獨(dú)立出去的一個XBWCSMyOrderEvaluationImageView,這樣方便操控view的顯示嫂拴,如果需要33矩陣布局或者其他42矩形布局的播揪,也方便布局。唯一注意的是imageview的復(fù)用筒狠,防止圖片混亂猪狈,造成最終查看大圖造成崩潰。第三部分是商家回復(fù)區(qū)域辩恼,也是獨(dú)立出去的XBWCSMyOrderEvaluationReplyView雇庙。
布局說完了,說高度的問題灶伊。
像這種的文字較多疆前,不確定高度的cell,就需要用到緩存高度的思想聘萨,一方面是為了布局的正確性竹椒,另一方面是為了優(yōu)化cell的流暢度。我們知道在tableview的滑動過程中米辐,會不斷的調(diào)用
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
這個方法胸完,如果將cell的高度計(jì)算放在這里书释,將會造成不可限量的消耗,可能數(shù)據(jù)量小的時候看不出來舶吗,但是量多了征冷,就可怕了。
大多數(shù)的高度緩存思想誓琼,無非就是拿到數(shù)據(jù)即拿到高度检激,數(shù)據(jù)是死的,高度也就是死的腹侣,只是看怎么去處理這個高度叔收。
在獲取到數(shù)據(jù)的時候,剝離出去一個方法傲隶,用于計(jì)算cell的高度饺律。同時在創(chuàng)建數(shù)據(jù)model的時候,多添加一個cellHeight屬性跺株,將計(jì)算好的高度再次賦值給cellHeight這個屬性复濒。
這樣我們就將需要的高度緩存起來了,在后面需要的時候乒省,取出cellHeight就可以了巧颈。
計(jì)算文字高度,其實(shí)很簡單就是計(jì)算富文本size
額外補(bǔ)充下查看大圖的方法