滚动后,IOS渐变叠加变为纯色

时间:2013-03-06 07:29:35

标签: ios

我有一个自定义的tableview,它将填充动态对象以形成列表。我试图在我的单元格中的图像的半顶部设置渐变叠加。

我在interface.builder中设置了我的布局。

以下是我的问题: - 我有一个问题,我的渐变叠加似乎每次在向上/向下滚动后导致它成为纯色叠加层时重新绘制。任何人都知道如何克服这个问题?

谢谢!


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    CustomTableViewCell *cell = (CustomTableViewCell* )[tableView dequeueReusableCellWithIdentifier:@"TableCellId"];
    if(cell == nil){
        cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"TableCellId"];
    }

    UIImageView *item_image = (UIImageView *)[cell viewWithTag:@"cell_image"];
    NSString *url_image = [NSString stringWithFormat:@"%@%@", URL_SERVER_HOST, item_pic];

    [item_image setImageWithURL:[NSURL URLWithString:url_image]];

    //Currently get called when new cell is loaded
    UIView *overlay = (UIView *)[cell viewWithTag:@"cell_overlay"];
    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = overlay.bounds;
    gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor clearColor] CGColor], (id)[[UIColor blackColor] CGColor], nil];
    [overlay.layer insertSublayer:gradient atIndex:0];

    UILabel * item_name = (UILabel *)[cell viewWithTag:@"cell_name"];
    item_name.text  = @"test text";

    return cell;
}

2 个答案:

答案 0 :(得分:2)

将与渐变相关的代码放入if (cell == nil),因此当重复使用单元格时,它不会再次添加渐变图层

答案 1 :(得分:0)

在应用渐变之前,我只是将叠加子图层设置为nil。只需在[overlay.layer insertSublayer:gradient atIndex:0];

之前写下面一行

overlay.layer.sublayers = nil;