Masonry自動計算cell行高:HYBMasonryAutoCellHeight
阿新 • • 發佈:2019-02-05
前言
還在手動計算UITableViewCell
的行高嗎?還在每次都因為需求變化一點就要大量調整cell
的高度而煩惱嗎?現在教大家如何通過Masonry
的自動佈局來實現自動計算cell
的行高!!!
在github
沒有找到基於Masonry
自動計算行高的庫,倒是找到了使用xib/storyboard
在新增約束來自動計算行高的庫,如: UITableView-FDTemplateLayoutCell
本人非常推崇Masonry
來實現程式碼的自動佈局,因此專案中都是使用Masonry
佈局的,為了自動計算行高,決定寫一個擴充套件,以達到自動計算的效果,如此一來,開發者不用再關心那些非固定行高的cell
設定關鍵依賴
要想自動計算出cell
的行高,我們還需要指定以哪個檢視作為cell
的最後一個檢視,比如我們最後要新增一條線,我們可以以這條線作為hyb_lastViewInCell
,如果這條線還需要距離底部一定距離,那麼可以設定hyb_bottomOffsetToCell
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/**
*
必傳設定的屬性,也就是在cell中的contentView內最後一個檢視,用於計算行高 |
計算行高API
要計算行高,只需要在UITableView
的計算行高的代理方法中呼叫此API即可:
1 2 3 4 5 6 7 8 9 10 11 | /** * 通過此方法來計算行高,需要在config中呼叫配置資料的API * * @param indexPath 必傳,對應的indexPath * @param confi 必須要實現,且需要呼叫配置資料的API * * @return 計算的行高 */ +(CGFloat)hyb_heightForIndexPath:(NSIndexPath*)indexPath config:(HYBCellBlock)config; |
在呼叫時,config
傳回來了cell
物件,需要在呼叫處呼叫方法來配置好資料,才能正確地計算出cell
的行高。通常是這樣呼叫的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-(CGFloat)tableView:(nonnull
UITableView*)tableView
heightForRowAtIndexPath:(nonnull
NSIndexPath*)indexPath{
HYBNewsModel*model=nil;
if(indexPath.row<self.dataSource.count){
|