Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

Ir a la última revisión | | 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
            if loader.image != nil {
34
                image(loader.image!)
35
            } else {
36
                placeholder
37
            }
38
        }
39
    }
40
}
41