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

时间:2014-02-15 23:09:12

标签: ios objective-c animation uiimageview sdwebimage

我正在为时间推移照片制作应用,我正在使用SDWebImage从服务器下载+缓存照片,我想从系列照片中进行幻灯片演示。我已经为UIImageView尝试了SDWebImage的方法setAnimationImagesWithURLs,但是我需要有更多的控制权(我不想在viewDidLoad之后立即启动动画,...)。

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

在UIImageView动画的每个教程中,他们将图像加载到数组中,用作setAnimationImages:array,但在阅读this answer后,看起来这不是一个好主意。

那么这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:8)

对于任何需要此功能的人,基于Wain's回答,我已经提出了解决方案 SDWebImageKASlideShow,效果非常好。

这是我的代码:

    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];

答案 1 :(得分:3)

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

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

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

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

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

所有人都说,利用现有代码:search CocoaControls