UITableViewCell自定義那點事

2021-09-30 15:06:52 字數 1770 閱讀 6200

一、自動適應cell內容高度

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath 

uilabel *label = (uilabel *)[cell viewwithtag:1];

nsstring *text;

text = [textarray objectatindex:indexpath.row];

cgrect cellframe = [cell frame];

cellframe.origin = cgpointmake(0, 0);

label.text = text;

cgrect rect = cgrectinset(cellframe, 2, 2);

label.frame = rect;

[label sizetofit];

if (label.frame.size.height > 46)

else

[cell setframe:cellframe];

return cell;

}

然後在heightforrowatindexpath中進行高度設定

- (cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath

二、自定義tableviewcell之間的分割線定製分隔線的方法有兩種,一種是通過api提供的setseparatorcolor 方法進行設定,另一種方法是通過認為的制定分割線,可以使也可以是顏色值,當然這個顏色和的畫素都必須非常小,否則介面可能會不協調。

1、先設定cell separatorcolor為clear,然後把做的分割線新增到自定義的custom cell上。

2、在cell裡新增乙個畫素的imageview後將載入進,之後設定tableview.separatorstyle = uitableviewcellseparatorstylenone

三、自定義cell中的內容

通常我們可能需要在乙個cell上放置我們需要的控制項,這樣就需要我們自定製cell,然後以這個cell來代替uitableviewcell。示例**:

//函式一 自定義cell的功能

-(void)makesubcell:(uitableviewcell *)acell withtitle:(nsstring *)title

value:(nsstring *)value

//函式二 **控制函式

-(uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

if (cell == nil)

else

return cell;

}

最終效果圖:

計算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的重用機制,重用機制 顧名思義,就是反覆利用資源的機制。以下通過一些 來看下通...