SDImageCache占位符gif

时间:2014-06-10 20:50:21

标签: ios objective-c gif sdwebimage

我正在尝试为我的SDImageCache创建一个gif作为占位符。

首先,我创建了gif:

    _imageView =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, cell.thumbnailImageView.frame.size.width,
                                                              cell.thumbnailImageView.frame.size.height)];
    _imageView.animationImages = [NSArray arrayWithObjects:
                                 [UIImage imageNamed:@"Polygon 1 copy.bolt_00000"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00000"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00001"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00002"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00003"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00004"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00005"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00006"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00007"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00008"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00009"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00010"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00011"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00012"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00013"], [UIImage imageNamed:@"Polygon 1 copy.bolt_00014.png"], nil];
    _imageView.animationRepeatCount = 500;

然后我把它变成UIimage

UIImage *imagety = _imageView.image; // get the UIImage
UIImage *otherImage = [UIImage imageNamed:@"Loadimage.png"]; // load another image
_imageView.image = otherImage; // change in the image in your UIImageView

然后我把它作为占位符:

 SDImageCache *imageCache = [SDImageCache sharedImageCache];
    [imageCache queryDiskCacheForKey:encodedString done:^(UIImage *image, SDImageCacheType cacheType) {

        if (image){
            cell.thumbnailImageView.image = image;
        }else{
            [cell.thumbnailImageView setImageWithURL:[NSURL URLWithString:encodedString] placeholderImage:imagety completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
                [imageCache storeImage:image forKey:encodedString]; 
            }];
        }
    }];

但这似乎不起作用?你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您检查_imageView.image返回的值:

UIImage *imagety = _imageView.image; 

你应该看到它是nil。这是因为您使用animationImages通过视图处理动画。

您无法在SDImage中将UIImageView(或与之关联的动画)用作占位符图片。

您可以使用:

UIImage *imagety = [UIImage animatedImageWithImages:
                         [NSArray arrayWithObjects:
                             [UIImage imageNamed:...],
                             nil]
                    duration:10.0f]; 

docs

  

animatedImageWithImages:持续时间:

     

从现有图像集创建并返回动画图像。

   + (UIImage *)animatedImageWithImages:(NSArray *)images duration:(NSTimeInterval)duration