方法1:簡單粗暴,利用新的api介面 systemlayoutsizefittingsize
我們宣告乙個存計算cell高度的例項變數:
@property (nonatomic, strong) uitableviewcell *prototypecell;
然後初始化它:
self.prototypecell = [self.tableview dequeuereusablecellwithidentifier:@
"c1"
];實現
tableview的高度**
- (cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath
要求返回乙個cell的估計值,
(cgfloat)tableview:(uitableview )tableview estimatedheightforrowatindexpath:(nsindexpath )indexpath。
方法優化1:cell
使用屬性儲存,呼叫方便。並且防止計算cell高度時重複建立cell例項。
優化2,cell的高度通過新api計算cell.contentview自動適配後的的高度然後加1。
優化3,
避免反覆呼叫多次heightforrowatindexpath
優化4,sizethatfits優化計算uitextview的高度
主要應用:auto layout with uilabel uitextview in uitableviewcell
方法2:靈活巧用cgsize
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
- (cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath
這兒用到了乙個nsstring的cagetory方法:
- (cgsize)calculatesize:(cgsize)size font:(uifont *)font ;
expectedlabelsize = [self boundingrectwithsize:size options:nsstringdrawinguseslinefragmentorigin attributes:attributes context:nil].size;
} else
return
cgsizemake(ceil(expectedlabelsize.width), ceil(expectedlabelsize.height));
} 使用到的方法
sizetofit,boundingrectwithsize,sizewithfont
計算UITableViewCell高度
uitableview是先執行 cgfloat tableview uitableview tableview heightforrowatindexpath nsindexpath indexpath函式計算整個uitableview內容高度,然後才執行 uitableviewcell table...
UITableViewCell重用問題
在寫sina 微博介面的過程中使用到了cell,那麼就是在cell上新增一些控制項,但是由於每條微博的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。cpp view plain copy uitableviewcell tablevi...
UITableViewCell重用機制
uitableview是ios開發中使用頻率非常高的乙個控制項,它常被用來展示資訊列表,儘管資訊資料可能非常多,但uitableview消耗的資源卻並不會隨著展示資訊的增多而變大,這都要得益於uitableviewcell的重用機制,重用機制 顧名思義,就是反覆利用資源的機制。以下通過一些 來看下通...