UITableView分隔细胞?

时间:2012-08-08 12:31:52

标签: ios uitableview cells

我在我的应用中正确实施了UITableView。现在我想稍微改变一下UI,所以我想在每个单元格之间留一个空格,就像我在这张图中所示:

enter image description here

有可能吗?如果是这样,怎么样?

同样在每个单元格之间,我可以使其透明,以便它没有任何白色区域阻挡视图的背景图像吗?

3 个答案:

答案 0 :(得分:6)

我至少可以想到两种方法:

1)创建一个透明的空单元格,无论你喜欢什么高度,然后将这个单元格用于索引为1,3,5,7,9,11的行......

我之前使用这种方法来创建自定义分隔符单元格,您可以完全相同,查看单元格之间的空间,如大透明分隔符单元格。我在this question中发布了代码,看看。

2)第二个选项,就是在底部使用透明部分的图像,这样细胞看起来就像它们之间有空格一样。

要为不同类型的单元格返回不同的高度,请执行以下操作:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row % 2 == 0) {
        // this is a regular cell
        return REGULAR_CELL_HEIGHT;
    }
    else {
        // this is a "space" cell
        return SPACE_CELL_HEIGHT;
    }
}  

你可能想要禁用任何选择&用户与“空间”单元格的交互,所以您需要做的就是将其添加到cellForRowAtIndexPath方法:

if (indexPath.row % 2 == 0) {
    cell.userInteractionEnabled = YES;
}
else {  
    cell.userInteractionEnabled = NO;
}

这将阻止任何用户与单元格的交互,如果您只想在用户点击单元格时不显示选择蓝色但仍希望调用didSelectRowAtIndexPath委托方法,请替换以上内容代码:

if (indexPath.row % 2 == 0) {
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;
}
else {  
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
}

答案 1 :(得分:1)

虽然Eyal的答案非常合理,但另一种简单的方法是让您的单元格比您需要的更大,并在具有背景颜色的单元格底部放置一个所需分隔符高度的视图你喜欢分隔符。

例如,如果您希望单元格的高度为40且分隔符为3,则构建一个高度为43的单元格,并将视图放置在y = 40,高度为3并设置其背景根据需要的颜色。

答案 2 :(得分:0)

1.您可以使用分组的tableview和部分。

2.每个部分都有单行和

3.tableview背景色为清晰的颜色。