UITableView顶部和按钮分隔符插入不起作用

时间:2013-12-31 06:44:16

标签: ios objective-c uitableview

我正在尝试在tableview中设置insets,以便每个单元格不会相互粘连。

为此,我已将以下方法添加到tableView:willDisplayCell:forRowAtIndexPath

if([tableView respondsToSelector:@selector(setSeparatorInset:)]){
    [tableView setSeparatorInset:UIEdgeInsetsMake(10, 15, 10, 15)];
}

我基本上希望在下一个单元格之前,在单元格的顶部和底部有一个 10pt 空间。此代码部分有效,因为左侧和右侧有一个可见的 15pt 插入。但是,顶部和底部仍然连接。

谢谢!

〜Carpetfizz

2 个答案:

答案 0 :(得分:4)

忽略顶部和底部值UITableViewCell Class Reference (separatorInset)

  

[...]只考虑左右插入值;顶部和底部插入值将被忽略。[...]

我建议通过增加单元格的高度来做间距,并使用适当的填充将内容放到顶部和底部边缘。

答案 1 :(得分:1)

您必须使用透明单元格。 例如,代码的一小部分。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return yourCount*2;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"elementCell";
    static NSString *TransparentCellIdentifier = @"transparentCell";

    NSString *neededIdentifier;

    if(indexPath.row % 2 != 0)
        neededIdentifier = TransparentCellIdentifier;
    else
        neededIdentifier = CellIdentifier;

    UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:neededIdentifier];
    if(cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:neededIdentifier];
    }
    if([neededIdentifier isEqualToString:TransparentCellIdentifier]) {
        [cell setBackgroundColor:[UIColor clearColor]];
        cell.userInteractionEnabled = NO;
    }
    else {
        [cell setBackgroundColor:[UIColor redColor]];
        cell.userInteractionEnabled = YES;
    }
    return cell;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.row % 2 == 0)
        return 70.0f;
    else
        return 10.0f;
}

是的,这有点奇怪,但它确实有效。