2013-07-29 3 views
4

Это, как я успешно использую SDWebImageManager для загрузки изображений:IOS SDWebImage Cross Fade Effect UITableViewCell

- (void) downloadThumbnails:(NSURL *) finalUrl 
{ 
    SDWebImageManager *manager = [SDWebImageManager sharedManager]; 
    [manager downloadWithURL:finalUrl 
        options:0 
        progress:nil 
        completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) { 

         if (image) 
         { 
          self.thumbnailURL = [finalUrl absoluteString]; 
         } 
        }]; 
} 

- (UIImage*)thumbnail { 

    if (!self.thumbnailURL) return nil; 
    return [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:self.thumbnailURL]; 
} 

Как я могу изменить, чтобы иметь эффект перекрестной выцветанию? Эффект Cross Fade - это тот, который делает показ изображения медленным, как приложение TechCrunch iOS. Благодаря!

UPDATE: Если я могу сделать что-нибудь еще, чтобы иметь эффект перекрестного затухания (кроме SDWebImage) в ячейке uitableview, чем вы можете записать его в ответе.

UPDATE: Я получил несколько ответов после моего последнего обновления, и я могу частично решить проблему. Используя transitionWithView, как в ответе ниже, он работает и перекрестно затухает, как я хочу, НО, поскольку я использую контроллер таблицы, который загружает больше записей, когда он касается дна, он обновляет все ячейки один раз до того, как новый блок записей будет Как я могу предотвратить это поведение?

ответ

4

Похоже, вы используете SDWebImageManager в другом файле, который обязательно не класс UITableViewController. Вы можете использовать transitionWithView, но не с SDWebImageManager напрямую, если это в другом классе.

Но в вашем столе класса контроллера представления, где вы используете cellForRowAtIndexPath и связать изображение с ImageView из UITableViewCell, вы можете, используя transitionView, как показано ниже:

[UIView transitionWithView:cell.(Your Image View) 
          duration:0.5 
          options:UIViewAnimationOptionTransitionCrossDissolve 
         animations:^{ 

          cell.(Your ImageView).image = [(how ever you are calling it)]; 


         } completion:^(BOOL finished) { 
          // Optionally you can do anything after the completion 
         }]; 

Надеются, что это помогает!

-1

пожалуйста, обратитесь к определению интерфейса:

- (id<SDWebImageOperation>)downloadWithURL:(NSURL *)url 
            options:(SDWebImageOptions)options 
            progress:(SDWebImageDownloaderProgressBlock)progressBlock 
           completed:(SDWebImageCompletedWithFinishedBlock)completedBlock; 

есть несколько значения для SDImageOptions, и я думаю, что это один является то, что вы ожидали:

/** 
* This flag enables progressive download, the image is displayed progressively during download as a browser would do. 
* By default, the image is only displayed once completely downloaded. 
*/ 
SDWebImageProgressiveDownload = 1 << 3 
1

Вы можете использовать UIView transitionWithView:duration:options:animations:completion: метод, чтобы пересечь раствориться изображением вид из старого изображения в новое:

[UIView transitionWithView:imageView 
        duration:0.4 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
        // Set the new image 
        // Since its done in the animation block, the change will be animated 
        imageView.image = newImage; 
       } completion:^(BOOL finished) { 
        // Do whatever when the animation is finished 
       }]; 

Просто используйте этот код в completed блоке, где обычно устанавливается изображение на imageView