1

我在 Interface Builder 中设置了一个表格视图,将 Separator 设置为 Single Line,在数据源类中我有以下代码:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 0) {
        UIImageView *topCellBackgroundImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"grouped-cell-bg-top"] resizableImageWithCapInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0)]];
        cell.backgroundView = topCellBackgroundImageView;
    }
    // If it's the last row
    else if (indexPath.row == ([tableView numberOfRowsInSection:0] - 1)) {
        UIImageView *bottomCellBackgroundImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"grouped-cell-bg-bottom"] resizableImageWithCapInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0)]];
        cell.backgroundView = bottomCellBackgroundImageView;
    }
    else {
        UIImageView *middleCellBackgroundImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"grouped-cell-bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(3.0, 3.0, 3.0, 3.0)]];
        cell.backgroundView = middleCellBackgroundImageView;
    }
}

viewDidLoad我做:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView.separatorColor = [UIColor redColor];
    self.tableView.backgroundView = nil;
    self.tableView.backgroundColor = [UIColor colorWithRed:245/255.0 green:244/255.0 blue:240/255.0 alpha:1.0];
}

但是边框颜色永远不会出现。我尝试将它们设置在图像中,但显然这会导致图像出现很多居中问题,并且它们的边界重叠。

更新:

在环顾四周之后,它确实被设置了,但似乎设置单元格的 backgroundView 会将您设置为 backgroundView的内容放在separatorColor 上。当我删除该willDisplayCell:方法时,红色显示良好(当我选择单元格时即使设置了 backgroundView 也会显示红色,直到我取消选择它)。问题是,如果我设置了 backgroundView,我该如何设置 separatorColor?

4

1 回答 1

2

您可以使用的一个技巧是使用UIView红色背景颜色和高度 1 点将 a 添加到背景视图中。另一种选择是要求您的设计师在背景视图的图像文件中加入这样的红线。

于 2013-07-06T20:41:02.247 回答