2011-03-24 79 views
3

我正在實現具有自定義背景並在點擊時展開的UITableViewCells。在單元格上設置backgroundView之後的UITableViewCells之間的垂直空間

我設置的自定義視圖作爲我UITableViewCells backgroundView:(在RowForIndexPath)

if (cell == nil) { 
    CGRect f = CGRectMake(0.0f, 0.0f, 300.0f, 50.0f); 

    cell = [[UITableViewCell alloc] initWithFrame:f reuseIdentifier:cellIdentifier]; 

    UIView *back = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 300.0f, 50.0f)]; 
    back.layer.cornerRadius = 8.0f; 
    [back setBackgroundColor:[UIColor blackColor]]; 

這工作得很好,通過設置backgroundView而不是內容查看,我backgroundView擴展以適應細胞的新大小在展開後(在輕敲後更改heightForRowAtIndexPath中的高度)。

我現在的問題是我想我的單元格之間有幾個像素的垂直空間。使用上述方法將使圓形的黑色單元「背對背」顯示。

有沒有一種方法可以在單元之間添加垂直空間,或者我可以採用完全不同的方法來獲得所需的單元格外觀?

在此先感謝。

+1

我不確定你在找什麼,但作爲參考,請檢查:http://stackoverflow.com/questions/3952705/gap-between-uitableviewcell/6494354#6494354 – Max 2011-06-27 14:23:59

回答

3

爲了在單元格之間顯示空格並避免出現「背靠背」問題,您可以添加UIView以及以下框架CGRectMake(0, 0, 320, 1),並將背景設置爲標準單元格分隔符的淺灰色或如果你只是想要一些填充,你可以使背景清晰。

我個人喜歡使用界面生成器,但是您當然可以通過編程來完成此操作。

UIView *cellSeparator = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320 ,1)]; 
[cellSeparator setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | 
            UIViewAutoresizingFlexibleRightMargin | 
            UIViewAutoresizingFlexibleWidth];  
[cellSeparator setContentMode:UIViewContentModeTopLeft];  
[cellSeparator setBackgroundColor:[UIColor lightGrayColor]]; 
[cell addSubview:cellSeparator]; 
[cellSeparator release]; 

我設置cellSeparator在電池頂端的原因是因爲效果確實對於第一個和最後行之間落在細胞。此外,設置autoresizingMask和contentMode以確保在對UITableViewCell進行尺寸更改時,可以正確調整單元格分隔符,這一點很重要。如果您在單元格中的任何元素開始於x=0 y=0,則需要將它們向下移動到單元格分隔符的高度,也許還需要一些用於填充的其他像素,以便分隔符不會穿過單元格中的任何元素。

相關問題