UIButton+Kingfisher.swift 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // UIButton+Kingfisher.swift
  3. // SwiftBilibili
  4. //
  5. // Created by 罗文 on 2021/7/3.
  6. // Copyright © 2021年 罗文. All rights reserved.
  7. //
  8. import Foundation
  9. import Kingfisher
  10. extension UIButton {
  11. @discardableResult
  12. func setImage(
  13. with resource: Resource?,
  14. for state: UIControl.State,
  15. placeholder: UIImage? = nil,
  16. options: ImageOptions = [.transition(.fade(0.25))],
  17. progress: ((Int64, Int64) -> Void)? = nil,
  18. completion: ((ImageResult) -> Void)? = nil
  19. ) -> DownloadTask? {
  20. return self.kf.setImage(with: resource, for: state, placeholder: placeholder, options: options, progressBlock: progress, completionHandler: { result in
  21. switch result {
  22. case .success(let value):
  23. print("Task done for: \(value.source.url?.absoluteString ?? "")")
  24. completion?(.success(value.image))
  25. case .failure(let error):
  26. print("Job failed: \(error.localizedDescription)")
  27. completion?(.failure(error))
  28. }
  29. })
  30. }
  31. @discardableResult
  32. func setBackgroundImage(
  33. with resource: Resource?,
  34. for state: UIControl.State,
  35. placeholder: UIImage? = nil,
  36. options: ImageOptions = [.transition(.fade(0.25))],
  37. progress: ((Int64, Int64) -> Void)? = nil,
  38. completion: ((ImageResult) -> Void)? = nil
  39. ) -> DownloadTask? {
  40. return self.kf.setBackgroundImage(with: resource, for: state, placeholder: placeholder, options: options, progressBlock: progress, completionHandler: { result in
  41. switch result {
  42. case .success(let value):
  43. print("Task done for: \(value.source.url?.absoluteString ?? "")")
  44. completion?(.success(value.image))
  45. case .failure(let error):
  46. print("Job failed: \(error.localizedDescription)")
  47. completion?(.failure(error))
  48. }
  49. })
  50. }
  51. }