J'ai essayé d'utiliser Kingfisher pour définir l'image d'arrière-plan d'un bouton, mais j'obtiens une erreur de compilation rapide:
Utilisation ambiguë de 'setBackgroundImage (avec: for: placeholder: options: progressBlock: completionHandler :)'
Et cette expression est-elle ambiguë? J'ai regardé la documentation KF et je pense que c'est ainsi que vous l'appelez.
var options: KingfisherOptionsInfo = [] options.append(.forceRefresh) button.kf.setBackgroundImage(with: URL(string: picture), for: .normal, placeholder: nil, options: options, progressBlock: nil, completionHandler: nil)
4 Réponses :
Cette erreur est due au fait que vous devez gérer le completionHandler
au lieu de passer nil
. Essayez le code ci-dessous:
button.kf.setBackgroundImage(with: URL(string: picture), for: .normal, placeholder: nil, options: options, progressBlock: nil) { result in // result is either a .success(RetrieveImageResult) or a .failure(KingfisherError) switch result { case .success(let value): // The image was set to image view: print(value.image) // From where the image was retrieved: // - .none - Just downloaded. // - .memory - Got from memory cache. // - .disk - Got from disk cache. print(value.cacheType) // The source object which contains information like `url`. print(value.source) case .failure(let error): print(error) // The error happens } }
nous pouvons supprimer ce paramètre que nous devons passer nil wen appel de fonction, puis l'erreur disparaîtra - a fonctionné pour moi.
J'ai eu le même problème et je l'ai résolu en supprimant simplement les paramètres nil dans l'appel de fonction.
imgBanner.kf.setImage(with: url , placeholder:#imageLiteral(resourceName: "landscape.png"))
avec
imgBanner.kf.setImage(with: url , placeholder:#imageLiteral(resourceName: "landscape.png"), options: nil, progressBlock: nil, completionHandler: nil)
p >
Pour Swift 5
remplacez votre ligne par ceci.
videoImageView.kf.setImage(with: resource, placeholder: nil, options: [.transition(.fade(0)), .processor(p)], progressBlock: nil) { (result) in }
Je l'ai résolu en supprimant l'appel de fonction des paramètres inutilisés (où nous passons nil
) et en important Kingfisher.
Étape 1 . importer Kingfisher
Étape 2 . button.kf.setBackgroundImage (avec: URL (string: urlString), pour: .normal, options: options)
quelle version martin-pêcheur et swift?
Swift 4.2, martin-pêcheur 5.0.1