自定義cell的用法

2021-06-28 15:46:35 字數 2490 閱讀 5081

對於乙個當轉行幹ios的我來說,通過一段時間的使用,確實感覺到了自定義cell的強,那麼我就來說說我個人對於自定義的愚見。

一、用xib來建立乙個cell

在日常開發中,往往有一些整體樣式呈現某種統一的,布局風格一樣的cell展示時,我們首選就是用xib來定義我們的cell,從而某種程度上也減少了不必要的開發成本。

1、我們可以先新建建立乙個empty的檔案用來定義xib的布局

2、設計好了xib,來到自定義cell類中來獲取xib的布局(這裡我採用的mvc思想,cell為view層)

一般來說,我們會提供乙個類方法快速建立乙個cell,裡面處於效能考慮給cell乙個標識,然後迴圈引用來建立cell,這樣乙個我們需要的基於xib的自定義cell就建立出來了

二、用**來建立乙個cell

當然,在開發過程中,往往很多cell都是不規則的布局,那麼這時候就需要通過**計算控制項距離來定義cell了

1、還是建立乙個自定義cell的類,然後在.h檔案中給乙個快速建立cell的類方法

#import @class qcmessageframe;

@inte***ce qcmessagecelltableviewcell : uitableviewcell

/** 初始化cell

*/+(instancetype) cellwithtableview:(uitableview *)tableview;

@end

2、來到.m中來實現方法

+(instancetype) cellwithtableview:(uitableview *)tableview

return cell;

}

3、由於我們需要自定義cell的樣式,我們選擇重寫initwithstyle:reuseidentifier:

//子控制項初始化,以簡單qq聊天布局舉例

-(instancetype)initwithstyle:(uitableviewcellstyle)style reuseidentifier:(nsstring *)reuseidentifier

return self;

}

通過如此的幾個步奏,我們用**所建立cell就完成了,當然有人可能疑問為什麼沒有設定位置的**,這是因為,qq聊天是動態的位置,init中是無法確定位置,這樣,我們就要使用乙個自己設計frame模型來計算布局我們的資料模型的位置

@implementation qcmessageframe

-(void)setmessage:(qcmessage *)message

//2.頭像

cgfloat iconw = 40;

cgfloat iconh = 40;

cgfloat icony = cgrectgetmaxy(_timeframe) + padding;

cgfloat iconx;

if (message.type == qcmessagetypeother) else

_iconframe = cgrectmake(iconx, icony, iconw, iconh);

//3.正文

cgfloat texty = icony;

cgfloat textx;

cgsize textmaxsize = cgsizemake(150, maxfloat);

//這裡的sizewithfont方法是自己封裝在nsstring裡面的乙個category,用來專門處理文字所佔的尺寸大小

cgsize textrealsize = [message.text sizewithfont:qctextfont maxsize:textmaxsize];

cgsize textrealbutton = cgsizemake(textrealsize.width+qctextpadding *2, textrealsize.height+qctextpadding *2);

if (message.type == qcmessagetypeother) else

_textframe = (cgrect),textrealbutton};

高度cgfloat textmaxy = cgrectgetmaxy(_textframe);

cgfloat iconmaxy = cgrectgetmaxy(_iconframe);

_celltall = max(textmaxy, iconmaxy) + padding;

}@end

至此,乙個通過**自定義的cell並且設定位置就完成了。

自定義cell的高度

自定義cell的高度 1.把模型資料再次改寫成 乙個擁有frame和模型資料的模型類 2.在設定資料的frame類中把 擁有模型資料和frame的模型類 賦值 3.在 方法中heightforrow中只要拿到擁有frame和資料模型的模型類就可以 算出高度了 1.新建乙個繼承自uitableview...

自定義cell的流程

自定義cell的流程 通過 自定義cell的流程 1 新建乙個繼承自uitableviewcell的類 2 重寫initwithstyle reuseidentifier方法 新增所需顯示的子控制項 不需要設定子控制項的資料和frame 進行子控制項一次性的屬性設定 有些屬性只需設定一次,比如字型 ...

自定義cell的高度

步驟 1.建立乙個繼承自uitableviewcell的類。2.將cell中要用到的檢視都宣告成屬性 3.將這些檢視都新增到cell的contentview上 4.將資料物件也宣告成屬性,並重寫資料物件的setter方法,將該資料模型的屬性賦值給cell中的檢視上。5.根據文字內容自定義cell的高...