#ios #swift #sdwebimage
#iOS #swift #sdwebimage
Вопрос:
У меня есть следующий код в cellForRowAt
функции:
let url = URL(string: myurl!)
cell.empPhoto.image? = (cell.empPhoto.image?.circle)!
cell.empPhoto.image? = (cell.empPhoto.image?.rounded)!
cell.empPhoto.sd_setImage(with: url)
Я использую sd_setImage
from SDWebImage для загрузки изображения с URL-адреса и кэширования его, но иногда URL-адрес не найден или имеет пустое содержимое, так как указать изображение по умолчанию для ячейки, если URL-адрес пуст, должен ли я проверять содержимое URL-адреса перед использованием sd_setImage
или я могу просто сделать это изта же библиотека?
я хочу что-то вроде этого :
if url.hasImage {
cell.empPhoto.sd_setImage(with: url)
}
else{ // use default image
cell.empPhoto.image=UIImage(named: "contact")
}
Комментарии:
1. при настройке изображения проверьте длину строки или проверьте, содержит ли строка ожидаемое доменное имя, если результат false, затем установите ожидаемое изображение на вид изображения.
2. @Io.s-c. Спасибо, но это не так, все URL-адреса имеют один и тот же домен, но с другим именем изображения, каждое изображение сотрудника хранится с его именем, а у некоторых из них нет изображений, поэтому возникает моя проблема
3. Имеет ли ваше изображение какое-либо расширение, например png, jpeg и т. Д. Затем проверьте, присутствует ли оно в строке url. просто.
4. @io.s-c. Все URL-адреса представляют собой URL-адреса изображений с расширением jpeg, но некоторые из этих URL-адресов не найдены
5. Ооо, итак, вы говорите, что URL правильный, но там нет изображения. в этом случае вы можете проверить, содержит ли объект sd image изображение. Используя это «if image ! = nil», вы можете это проверить.
Ответ №1:
Вы можете использовать эту версию sd_setImage
метода:
cell.empPhoto.sd_setImageWithURL(url, placeholderImage:UIImage(imageNamed:"placeholder.png"))
placeholderImage будет изображением по умолчанию, если URL-адрес не содержит допустимого изображения.
Дополнительное примечание: возможно, вы захотите проверить Kingfisher, он создан на основе SDWebImage, но создан ли он с использованием Swift.
Комментарии:
1. Спасибо, но я получаю ошибку при вызове этого метода
sd_setImageWithURL
2. Это зависит от используемой вами версии Swift. Вероятно, вы используете Swift 3, оно должно быть похоже на: cell.empPhoto.sd_setImage(с: url, placeholderImage: UIImage(imageNamed:»placeholder.png»))
Ответ №2:
Лучше иметь изображение-заполнитель, чтобы изображение все равно было, даже если ваш запрос не выполнен.
Вы можете установить заполнитель с помощью функции SDWebImage sd_setImageWithURL:placeholderImage
Swift
cell.empPhoto.sd_setImage(with: url, placeholderImage: placeholderImage);
Objective-C
[cell.empPhoto.image sd_setImageWithURL:url placeholderImage:placeholderImage];
Ответ №3:
попробуйте и этот код:
Swift 3 и SDWebImage 4.0.0
//SDWebImage 4.0.0
self.profileImageView.sd_setImage(with: yourImageUrl, placeholderImage: UIImage("Your placeholder image name")