等高
storyboard
拖一個(gè)tableView行疏,設(shè)置固定的行高
在cell上設(shè)置子控件
設(shè)置cell的標(biāo)識(shí)
控制器取cell設(shè)置數(shù)據(jù)
xib
創(chuàng)建cell的xib
布局子控件
控制器設(shè)置行高,取cell設(shè)置數(shù)據(jù)
代碼
代碼自定義cell的子控件
控制器設(shè)置行高屋讶,取cell設(shè)置數(shù)據(jù)
非等高
xib
新建xib文件設(shè)置子控件朋沮,基本和等高一樣
控制器設(shè)置數(shù)據(jù)菊卷,cell重寫setter方法毯盈,然后強(qiáng)制布局為數(shù)據(jù)模型計(jì)算出cell應(yīng)該有的高度
在控制器中先返回cell預(yù)期的高度剃毒,這樣就可以使獲得cell的數(shù)據(jù)源方法在獲得高度的方法之前調(diào)用
注意點(diǎn)就是由于強(qiáng)制布局導(dǎo)致label的計(jì)算出來的高度和實(shí)際顯示的高度有時(shí)候不一致,可以在cell的awakeFromNib中設(shè)置label的preferredMaxLayoutWidth屬性設(shè)置文字布局的范圍,由于約束所以label的間距依然是距離父控件的距離左右是10迟赃,有時(shí)候右邊會(huì)空出一點(diǎn)陪拘,是因?yàn)橄乱粋€(gè)文字顯示不下,換行到下一行去顯示
storyboard
和xib的基本一致纤壁,只是將子控件的布局從xib轉(zhuǎn)移到storyboard中
在storyboard中如果設(shè)置label距離父控件的左右距離各為10,那么運(yùn)行出來會(huì)有約束警告捺信,解決辦法是只給label設(shè)置上酌媒、左間距確定位置即可,在cell的awakeFromNib中設(shè)置label的preferredMaxLayoutWidth屬性設(shè)置文字布局的范圍迄靠,這個(gè)時(shí)候的label的范圍就是文字的范圍秒咨,實(shí)現(xiàn)了包裹的效果
代碼
增加frame模型,在該模型中計(jì)算frame
自定義cell demo code : demo 密碼 : jcsb
tableView的運(yùn)用 : QQ聊天布局 密碼 : i612