使用 SDWebImage 下载的图像的 UIImageView 幻灯片

Posted

技术标签:

【中文标题】使用 SDWebImage 下载的图像的 UIImageView 幻灯片【英文标题】:UIImageView slideshow from images downloaded with SDWebImage 【发布时间】:2014-02-15 23:09:11 【问题描述】:

我正在为延时照片制作应用程序,我正在使用SDWebImage 从服务器下载+缓存照片,我想从一系列照片中制作幻灯片。我已经为 UIImageView 尝试了 SDWebImage 的方法setAnimationImagesWithURLs,该方法有效,但我需要更多控制(我不想在 viewDidLoad 之后立即开始动画,...)。

我想在显示视图控制器后,它开始从 NSURL 数组中下载照片,只显示第一张图片,有播放/停止/下一个控件,用户可以点击它们开始动画...

在每个UIImageView动画教程中,他们都将图片加载到数组中,作为setAnimationImages:array使用,但是看了this answer之后,好像不是个好主意。

那么正确的方法是什么?

【问题讨论】:

【参考方案1】:

对于任何需要这个的人,根据Wain's 的回答,我想出了使用解决方案 SDWebImage 和 KASlideShow,效果很好。

这是我的代码:

    self.slideshow = [[KASlideShow alloc] initWithFrame:CGRectMake(0,0,320,225)];
    [self.slideshow setDelay:1]; // Delay between transitions
    [self.slideshow setTransitionDuration:1]; // Transition duration
    [self.slideshow setTransitionType:KASlideShowTransitionFade]; // Choose a transition type (fade or slide)
    [self.slideshow setImagesContentMode:UIViewContentModeScaleAspectFill]; // Choose a content mode for images to display
    self.slideshow.delegate = self;

    SDWebImageManager *manager = [SDWebImageManager sharedManager];
    for (NSURL *snap in self.imagesURLArray) 
        [manager downloadWithURL:snap options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) 
            if (image)
            
                [self.slideshow addImage:image];
            
        ];
    

    // do not forget to add slideshow as a subview
    [self.view addSubview:self.slideshow];

【讨论】:

我也遇到过类似的情况。我正在使用SDWebImageManager 创建幻灯片,我很困惑它是否正在缓存图像。你能检查我的问题here【参考方案2】:

如果您正在运行幻灯片放映,您通常会在每个图像之间有一个漂亮的过渡动画。如您所说,您还想暂停,手动跳过等。

使用单个图像视图不一定能很好地解决这个问题。您可能希望拥有 2 个图像视图并串联使用它们(淡入或移入和移出屏幕)。

SDWebImage 能够在后台为您下载图片 (SDWebImageDownloader.sharedDownloader),因此您可以轻松地将下载与幻灯片动画分离。

NSTimer 适合运行幻灯片。您可以根据需要启动并使其无效。运行移动到下一个图像的方法也可以显式运行是必需的。

所以,您想要的不是图像视图动画。这是一个幻灯片组件,恰好是用(几个)图像视图实现的。

总而言之,利用现有代码:search CocoaControls。

【讨论】:

以上是关于使用 SDWebImage 下载的图像的 UIImageView 幻灯片的主要内容,如果未能解决你的问题,请参考以下文章

使用 SDWebImage 下载的图像的 UIImageView 幻灯片

缓存图像以供离线使用 SDWebImage

SDWebImage 取消下载

SDWebImage - 如何从缓存加载图像?

如何在 SDWebImage 下载器中添加 UIImageView (UIActivityIndi​​catorForSDWebImage)?

具有多个 UiImageViews 的 SDWebImage 和 UITableViewCell 不显示所有图像