UICollectionView在滚动时显示错误的图层

时间:2015-03-30 07:07:24

标签: ios objective-c uicollectionview sdwebimage

我知道这是非常常见的问题。我已经看到很多人在这里问这类问题,但我似乎仍然无法做到正确。

我有一个带图片的UICollectionView。我是从Facebook获取图片所以我使用SDWebImage加载它们。

直到这里一切正常。

用户可以上传他拍摄的照片。所以,直到上传过程完成并且图片上传到Facebook,我希望显示本地图像,但是有一个图层(不同的alpha,活动等等),一旦我从服务器收到通知,新的图像来自Facebook正在取代当地的。

我的问题是,在将本地图像添加到带图层的collectioView后,更多单元格正在显示此图层,并且不时向上滚动时,新图像会发生变化。

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{

    PictureCell* cell = (PictureCell *)[_collectionView dequeueReusableCellWithReuseIdentifier:[PictureCell reuseIdentifier] forIndexPath:indexPath];

    Picture *picture=(Picture *)[_campaign.pictures objectAtIndex:indexPath.row];


    //If the picture is being uploaded, add the image from the local image property and set the blur layer

    if (!picture.facebookPicture) {
        cell.pictureImageView.image = picture.image;
    [cell TaggleBlur:YES];

    }
    else
    {
        [cell.pictureImageView sd_setImageWithURL: [NSURL URLWithString:picture.facebookPicture.source ]placeholderImage:[UIImage imageNamed:@"actionBar_pico_icon"]  completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
            NSArray *visibleIndexPaths = [_collectionView indexPathsForVisibleItems];
            if (error==nil) {
                if ([visibleIndexPaths containsObject:indexPath]) {

                    cell.pictureImageView.image = image;
                    [cell TaggleBlur:NO];

                }
            }
        }];
    }

    return cell;
}

0 个答案:

没有答案