半透明UITableViewCells在屏幕滚动之前不透明

时间:2011-08-19 14:32:56

标签: iphone cocoa-touch uitableview

[固定] 在尝试了不同的解决方案之后,我终于找到了一个工作。我需要做的就是在willDisplayCell方法中将单元格backgroundColor设置为clear:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

[cell setBackgroundColor:[UIColor clearColor]];

我的UITableview有一个背景图片(照片),表格视图中的单元格具有半透明背景。

当我第一次显示UITableView时,单元格没有显示为透明。但是,只要我在屏幕上滚动一个单元格并将其向后滚动到具有半透明背景的单元格显示上。

有没有人知道为什么在单元格滚动屏幕之前它无法正确显示?见附图。第一个显示tableview一加载。第二张图片显示了将最上面的几个单元格从屏幕上滚动并再次打开后的样子。

Initial state of tableview.  The cells are not showing semi-transparent Top3 cells have been scrolled off screen and back on again and display how I want them to

下面是我用来设置单元格的代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellPhotoIdentifier = @"PhotoDescriptionCell";


      UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellPhotoIdentifier] autorelease];

    // Configure the cell...
    cell.textLabel.text = [NSString stringWithFormat:@"Photo description %i", indexPath.row];
    cell.textLabel.textColor = [UIColor whiteColor];
    cell.opaque = NO;
    cell.contentView.backgroundColor = [UIColor blackColor];
    cell.contentView.opaque = NO;
    cell.contentView.alpha = 0.7;
    cell.textLabel.backgroundColor = [UIColor clearColor]; 

    return cell;
}

我正在使用XCode 4和IOS SDK 4.3

2 个答案:

答案 0 :(得分:4)

重新阅读@progrmr给出链接的答案后,我再次尝试并设法让它发挥作用。

我需要在 willDisplayCell 方法中设置要清除的单元格背景颜色

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

[cell setBackgroundColor:[UIColor clearColor]];

答案 1 :(得分:0)

您可能首先加载单元格,然后在加载单元格后将它们设置为透明。然后,一旦您将它们从屏幕上滚动并重新打开,它们就是透明的,因为您已强制使用正确的设置重新加载它们。

您可以修改此购买更改Interface Builder中的单元属性以使单元从一开始就是透明的,或者在配置单元后,您需要添加强制单元重新加载的代码。让我试着找到这个,因为我不知道我的头脑。

这个问题可以帮助您找出细胞重新加载:Reloading only one UITableViewCell on a UITableview