Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. import SwiftUI
  2. import Combine
  3. import AlamofireImage
  4.  
  5. let imageDownloader = ImageDownloader(
  6. configuration: ImageDownloader.defaultURLSessionConfiguration(),
  7. downloadPrioritization: .fifo,
  8. maximumActiveDownloads: 4,
  9. imageCache: AutoPurgingImageCache()
  10. )
  11.  
  12. extension ImageDownloader {
  13. func image(for url: URL) -> AnyPublisher<UIImage?, Never> {
  14. return Publishers.Future { subscriber in
  15. let urlRequest = URLRequest(url: url)
  16. imageDownloader.download(urlRequest) { response in
  17. if let image = response.result.value {
  18. subscriber(.success(image))
  19. }
  20. }
  21. }
  22. .eraseToAnyPublisher()
  23. }
  24. }
  25.  
  26. struct RemoteImage: View {
  27. // let placeholder = UIImage(named: "placeholder.jpg")!
  28. let url: URL
  29. init(url: URL) {
  30. print("RemoteImage created \(url)")
  31. self.url = url
  32. }
  33.  
  34. @State private var image: UIImage? = nil
  35.  
  36. var body: some View {
  37. Group {
  38. if image != nil {
  39. Image(uiImage: image!)
  40. } else {
  41. Image(systemName: "person.crop.circle")
  42. }
  43. }
  44. .bind(imageDownloader.image(for: url), to: $image)
  45. }
  46. }
  47.  
  48. //#if DEBUG
  49. //struct RemoteImage_Previews : PreviewProvider {
  50. // static var previews: some View {
  51. // RemoteImage()
  52. // }
  53. //}
  54. //#endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement