繁体   English   中英

SDWebImage正在下载但不显示图像

[英]SDWebImage downloading but not show image

我正在使用UICollectionView

图像来自FTP服务器。 这是我的代码,用于下载和在按钮上显示图像:

[tempp sd_setImageWithURL:[NSURL URLWithString:[[arrFilterData objectAtIndex:indexPath.row] valueForKey:@"ZoomPrdImg"]] //PrdImg //ZoomPrdImg
             placeholderImage:nil
                    completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
                        if (image) {
                            myCell.image.userInteractionEnabled = YES;
                            dispatch_async(dispatch_get_main_queue(), ^{
                                [myCell.image setImage:image forState:UIControlStateNormal];
                                [myCell setNeedsLayout];
                            });
                        }
                    }];

myCell.image是设置下载图像的我的按钮。 现在我不知道该图像是否已成功下载,但按钮上显示了螺母。 UICollectionView有3000多个图像,但是显示了一些图像和一些空白。

这怎么可能? 如何解决呢? 那里是什么问题?

编辑: tempp在viewDidLoad分配

- (void)viewDidLoad {
    tempp = [[UIImageView alloc] init];
}

更换

 [myCell.image setImage:tempp.image forState:UIControlStateNormal];
                            [myCell setNeedsLayout];

 [myCell.image setImage:image forState:UIControlStateNormal];
                            [myCell setNeedsLayout];

因为在完成处理程序中,您正在将图像获取到image对象中

我认为您的变量tempp被破坏,并取消了对图像的请求。 将请求代码更改为

[myButton sd_setImageWithURL:[NSURL URLWithString:@"MyURL"] forState:UIControlStateNormal completed:yourCompletitionBlock];

一切都应该没事。

UPD

根据您对tempp变量的回答,我认为您每页看到一个图像,因为当您对许多单元格调用sd_setImage ...时,只有最后一个请求正在加载。 请求是异步的,如果您请求新图像,则旧请求将被取消。

来自SDWebImage的代码:

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock {
    [self sd_cancelCurrentImageLoad];
    objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

第一行取消旧请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM