UITableViewCells之间的透明度

时间:2010-09-22 15:30:22

标签: iphone cocoa-touch uikit

我想在UITableViewCells之间保持透明。细胞之间的空间。

我使用自定义创建的单元格并设置背景我使用此代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CustomCell = @"CustomBookingCell";

    currentBooking = [arrayBookings objectAtIndex:indexPath.row];

    CustomBookingCell *cell = (CustomBookingCell *)[tableView dequeueReusableCellWithIdentifier:CustomCell];

    if (cell == nil) {

        UIViewController *c = [[UIViewController alloc] initWithNibName:@"CustomBookingCell" bundle:nil];
        cell = (CustomBookingCell *)c.view;
        [ c release ];
    }



    bookingImage = [[UIImageView alloc] initWithImage:
                     [UIImage imageNamed:currentBooking.imageSource]];

    [cell.imageForBooking addSubview:bookingImage];
    cell.selectionStyle = UITableViewCellSelectionStyleGray;
    cell.contentView.backgroundColor = [UIColor clearColor];


    UIView* backgroundView = [[UIView alloc] initWithFrame:CGRectZero];
    UIImage* bgImage = [UIImage imageNamed:@"Background_300_82.png"];
    UIColor *bgColor = [[UIColor alloc] initWithPatternImage: bgImage];

    backgroundView.backgroundColor = bgColor;
    cell.backgroundView = backgroundView;
    cell.label.text = currentBooking.title;

    [bookingImage release];
    [bgColor release];
    [backgroundView release];


    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 90;
}

单元格的高度比tableCellBg.png高10个像素。 我的背景视图也有一个图像作为背景(当然,这个背景应该在单元格之间显示)。

所以我尝试在底部的tableCellBg.png中添加10个带透明度的像素来修复此问题。但是细胞之间的空间是黑色的。我无法看到我的单元格之间的视图背景。

我该怎么办?我是否必须使用tableCellBg.png的高度在cellForRowAtIndexPath中创建UIView,然后将Custom UITableViewCell作为子视图添加到创建的UIView中,其高度更低?

或者有更简单的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:5)

您的表格视图需要清晰的背景颜色。例如

myTableView.backgroundColor = [UIColor clearColor];

答案 1 :(得分:1)

我通过使用另一种方法将背景图像添加到UITableViewCell来解决它:

    UIImage *image = [UIImage imageNamed:@"ny_bg_event.png"];
UIImageView  *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(0, 0, 300, 84);
cell.backgroundView = imageView;
cell.backgroundColor = [UIColor clearColor];
[imageView release];

[cell setFrame:CGRectMake(0, 0, 300, 84)];

cell.contentView.backgroundColor = [UIColor clearColor];

而不是创建UIView,而是使用了UIImageView。