Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  CustomAsyncImage.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 3/9/22.
6
//
7
import SwiftUI
8
 
9
struct CustomAsyncImage<Placeholder: View>: View {
10
    @StateObject private var loader: ImageLoader
11
    private let placeholder: Placeholder
12
    private let image: (UIImage) -> Image
13
 
14
 
15
    init(
16
        url: URL,
17
        @ViewBuilder placeholder: () -> Placeholder,
18
        @ViewBuilder image: @escaping (UIImage) -> Image = Image.init(uiImage:)
19
    ) {
20
        self.placeholder = placeholder()
21
        self.image = image
22
 
23
        _loader = StateObject(wrappedValue: ImageLoader(url: url, cache: Environment(\.imageCache).wrappedValue))
24
    }
25
 
26
    var body: some View {
27
        content
28
            .onAppear(perform: loader.load)
29
    }
30
 
31
    private var content: some View {
32
        Group {
33
 
34
            if loader.image != nil {
35
                image(loader.image!)
36
            } else {
37
                placeholder
38
            }
39
 
40
        }
41
    }
42
}
43