SDWebImage 图片淡入的问题

使用SDWebImage时如果先设置了占位图placeholderImage,加载完成后的图片如何淡入显示

比方若使用UIImageView+WebCache 中的

 [self.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg"] placeholderImage:[UIImage imageNamed:@"test1.jpg"]];

方法

则再UIImageView+WebCache.m 中的
这个方法中加入

- voidsd_setImageWithURL:NSURL *url placeholderImage:UIImage *placeholder options:SDWebImageOptionsoptions progress:SDWebImageDownloaderProgressBlockprogressBlock completed:SDWebImageCompletionBlockcompletedBlock { [self sd_cancelCurrentImageLoad]; objc_setAssociatedObjectself, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC; if !options & SDWebImageDelayPlaceholder { dispatch_main_async_safe^{ self.image = placeholder; }; } if url { // check if activityView is enabled or not if [self showActivityIndicatorView] { [self addActivityIndicator]; } __weak __typeofselfwself = self; id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:progressBlock completed:^UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL { [wself removeActivityIndicator]; if !wself return; dispatch_main_sync_safe^{ if !wself return; if image && options & SDWebImageAvoidAutoSetImage && completedBlock { completedBlockimage, error, cacheType, url; return; } #warning 成功请求到图片的时候 else if image {
// wself.image = image; 原来的判断内的实现 改成 CATransition *transition = [CATransition animation]; transition.type = kCATransitionFade; transition.duration = 3.0f; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; [self.layer addAnimation:transition forKey:nil]; wself.image = image; [wself setNeedsLayout]; } else { if options & SDWebImageDelayPlaceholder { wself.image = placeholder; [wself setNeedsLayout]; } } if completedBlock && finished { completedBlockimage, error, cacheType, url; } }; }]; [self sd_setImageLoadOperation:operation forKey:@"UIImageViewImageLoad"]; } else { dispatch_main_async_safe^{ [self removeActivityIndicator]; NSError *error = [NSError errorWithDomain:SDWebImageErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @"Trying to load a nil url"}]; if completedBlock { completedBlocknil, error, SDImageCacheTypeNone, url; } }; }
}

试试放进动画里?

发表评论

电子邮件地址不会被公开。 必填项已用*标注