2013-04-26 203 views
0

我正在使用SDWebImage库在iOS应用中缓存图像。现在,当从服务器加载图像时,我在imageview上显示了一个活动指示器。我正在使用以下代码iOS设置SDWebImage中的URL请求超时

__block UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    activityIndicator.center = self.serviceImageView.center; 
    activityIndicator.hidesWhenStopped = YES; 
    [activityIndicator startAnimating]; 
    [self.serviceImageView addSubview:activityIndicator]; 
    [self.serviceImageView setImageWithURL:[NSURL URLWithString:[self.service valueForKey:@"image"]] placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { 
    [activityIndicator removeFromSuperview]; 
    }]; 

它工作正常。但对于一些图像,它没有加载图像,所以它永远不会完成块&活动指示器旋转无限。 那么有没有什么办法可以设置一个超时时间,以便在一段时间后它给了我一个错误或类似的东西,这样我就可以停止活动指示器。

这是有点银色。请帮忙。

回答

0

您应该检查URL是否有效,因为当您通过nilsetImageWithURL时,不会调用完成块。

NSURL* url = [NSURL URLWithString:[self.service valueForKey:@"image"]]; 

if (url) 
    [self.serviceImageView setImageWithURL:url placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { 
    [activityIndicator removeFromSuperview]; 
    }]; 
I 
+0

该网址是好的,但这并没有返回任何图像而我只是看到它的作品第一次罚款。之后,SDWebImage将URL列入黑名单,因此它不会调用完成块。我不得不使用选项SDWebImageRetryFailed – 2013-04-26 12:05:33