2017-02-02 24 views
2

Я хочу показать цвет фона изображения перед загрузкой и если загрузка не удалась или изображение недоступно, я хочу показать изображение заполнителя. Как я могу достичь этого?Установить изображение заполнителя, только если изображение не загружается. SDWebImage

Основная цель - установить изображение позже не во время загрузки.

Благодаря

+1

Не обязательно. Я использовал в течение imageView.sd_setImage (с: url, placeholderImage: UIImage (named: "ico_placeholder")) Но он делает то, что он устанавливает изображение закладок даже во время загрузки. Я хочу показать заполнитель только в случае сбоя загрузки. –

ответ

2

решения для Swift 3:

cell.imageView?.sd_setImage(with: url) { (image, error, cache, urls) in 
      if (error != nil) { 
       cell.imageView.image = UIImage(named: "ico_placeholder") 
      } else { 
       cell.imageView.image = image 
      } 
} 

Раствора для Objective C:

[cell.imageView sd_setImageWithURL:url 
        placeholderImage:nil 
         completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 
           if (error) { 
            self.imageView.image = [UIImage imageNamed:@"ico_placeholder"]; 
           } else { 
            self.imageView.image = image; 
           } 
}]; 

Надеется, что вы, ребята, найти это полезным.

+1

Не могли бы вы рассказать мне о проблеме, с которой вы столкнулись, чтобы подавить голос. Может быть, я могу помочь. благодаря –

4

От SDWebImage Documentation:

Использование блоков

С блоками, вы можете получать уведомления о ходе изображения загрузки и всякий раз, когда поиск изображения завершена успешно или нет:

// Here we use the new provided sd_setImageWithURL: method to load the web image 

для Swift:

cell.imageView.sd_setImageWithURL(url, placeholderImage:nil, completed: { (image, error, cacheType, url) -> Void in 
      if (error) { 
       // set the placeholder image here 

      } else { 
       // success ... use the image 
      } 
     }) 

для Objective-C

[cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
         placeholderImage:nil 
          completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 
            if (error) { 
             self.imageView.image = [UIImage imageNamed:@"placeHolderImage"]; 
            } 
           }]; 
+1

Могу ли я получить быструю версию 3, чтобы проверить это? –

+2

Спасибо, я тоже сделал это сам. Хорошая работа. Если вам понравился мой вопрос и сочтет его правильным голосованием. –

1

Вы можете сделать это путем передачи nil атрибута заполнителя и обработки завершения блока самостоятельно.

Как это:

[self.imageView sd_setImageWithURL:self.imageURL 
        placeholderImage:nil 
          options:nil 
          progress:nil 
         completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 
          if(!error) { 
           self.imageView.image = image; 
          } else { 
           self.imageView.image = [UIImage imageNamed:@"placeHolder"]; 
          } 
          }]; 

я не пробовал. Попробуйте и скажите, если бы это сработало для вас.

+0

Предполагая, что желаемый цвет фона уже установлен –

+1

, более быстрая помощь была бы быстрой версии 3. :) –

+0

Извините, я не могу с этим поделать, я не кодирую с помощью Swift –