? ? ? ? 如果是比較復雜的cell,里邊有好多控件舍肠,而且有的控件不一定在每個 cell都顯示的話搀继,用李明杰給出的思路,挺好翠语。思路大概是叽躯,請求數(shù)據(jù)后,每條數(shù)據(jù)對應(yīng)一個模型肌括,然后對應(yīng)每個模型 点骑,創(chuàng)建一個frameModeL,給它傳入一個數(shù)據(jù)模型,他會把相應(yīng)的控件的frame 和整個cell的高度計算好谍夭,然后在cell里有一個屬性黑滴,可以framemodel 的屬性,在他的setter方法里直接賦值就好紧索,賦值包括數(shù)據(jù) 和frame ,應(yīng)為這個方法是cell滑動就會調(diào)用袁辈,這樣每次調(diào)用時,只拿值珠漂,不進行計算吵瞻,節(jié)省性能葛菇。 而在heightforrow方法里,直接拿到相應(yīng)的frameModel,然后返回就好橡羞。
1.李明杰的思路—FrameModel
創(chuàng)建的framemodel模型眯停,給它傳入一個數(shù)據(jù)model,它會為每個控件生成相應(yīng)的frame
然后在cell方法里直接賦值就可以了
而在heightforrow里
這就是李明杰講的思路卿泽,拿到數(shù)據(jù)就會計算莺债,而不是在cell展示的數(shù)據(jù)再進行計算。把計算的操作放在了后臺签夭,所以性能上應(yīng)該沒有問題齐邦。
我寫的時候不小心寫錯的地方
lab的字體大小 要和boundrect里的一樣,還有注意換行第租。
如果cell的數(shù)目較少措拇,就沒有性能的問題,那么大可以用系統(tǒng)的
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewAutomaticDimension;? ? ? //自動調(diào)整約束慎宾,性能非常低丐吓,灰常的卡
}
不考慮架構(gòu)的話, 可以給數(shù)據(jù)模型增加一個屬性趟据, 計算的高度券犁,比較簡單粗暴。