uitableview的強大更多程度上來自於可以任意自定義uitableviewcell單元格。通常,uitableview中的cell是動態的,在使用過程中,會建立乙個cell池,根據每個cell的高度(即tableview:heightforrowatindexpath:返回值),以及螢幕高度計算螢幕中可顯示幾個cell。而進行自定義tableviewcell無非是採用**實現或採用ib編輯nib檔案來實現兩種方式,本文主要收集**的方式實現各種cell自定義。
如何動態調整cell高度
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpathuilabel *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;
}
- (cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath如何用自定義table separeator分割線
一般地,利用類似[tableview setseparatorcolor:[uicolor redcolor]];語句即可修改cell中間分割線的顏色。那又如何用乙個作為分割線背景呢?可以嘗試如下:
方法一:
先設定cell separatorcolor為clear,然後把做的分割線新增到自定義的custom cell上。
方法二:
在cell裡新增乙個畫素的imageview後將載入進,之後設定tableview.separatorstyle = uitableviewcellseparatorstylenone
自定義首行cell與其上面導航欄間距
tableview.tableheaderview = [[[uiview alloc] initwithframe:cgrectmake(0,0,5,20)] autorelease];自定義uitableviewcell的accessory樣式
預設的accessorytype屬性有四種取值:uitableviewcellaccessorynone、uitableviewcellaccessorydisclosureindicator、uitableviewcellaccessorydetaildisclosurebutton、uitableviewcellaccessorycheckmark。如果想使用自定義附件按鈕的其他樣式,則需使用uitableview的accessoryview屬性來指定。
uibutton *button;後,雖然可以捕捉到每個附件按鈕的點選事件,但我們還無法進行區別到底是哪一行的附件按鈕發生了點選動作!因為addtarget:方法最多允許傳遞兩個引數:target和event,這兩個引數都有各自的用途了(target指向事件委託物件,event指向所發生的事件)。看來只依靠cocoa框架已經無法做到了。if(iseditableornot) else
但我們還是可以利用event引數,在自定義的btnclicked方法中判斷出事件發生在uitableview的哪乙個cell上。因為uitableview有乙個很關鍵的方法indexpathforrowatpoint,可以根據觸控發生的位置,返回觸控發生在哪乙個cell的indexpath。而且通過event物件,正好也可以獲得每個觸控在檢視中的位置。
//- (void)btnclicked:(id)sender event:(id)event
這裡加入自己的邏輯
}
可任意自定義的UITableViewCell
uitableview的強大更多程度上來自於可以任意自定義uitableviewcell單元格。通常,uitableview中的cell是動態的,在使用過程中,會建立乙個cell池,根據每個cell的高度 即tableview heightforrowatindexpath 返回值 以及螢幕高度計算...
可自定義函式 並且函式可任意巢狀的中綴表示式解析器
中綴表示式解析器的特點 可自定義函式 並且函式可任意巢狀的中綴表示式轉化成宣告函式引數個數的字尾表示式 支援算術運算和邏輯運算 用來表示優先順序,用來標識自定義函式的引數列表 示例 中綴表示式max abs random 9,1 random 1,9 3 0轉化成宣告函式引數個數的字尾表示式 9,1...
給任意視窗自定義ToolTips
給乙個視窗顯示乙個tooltips有以下三步 建立乙個tooltip風格的視窗。為這個tooltip新增 tool tool 是msdn對一條提示資訊的說法,每條提示資訊對應一塊觸發區域,同時對應乙個id 觸發 tool 顯示提示訊息。tooltip是乙個視窗,如果是類似 的button控制項上的t...