Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  CustomAsyncImageProfile.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 5/5/22.
6
//
7
 
8
import Foundation
9
import SwiftUI
10
 
11
struct CustomAsyncImageProfile<Placeholder: View>: View {
12
    @StateObject private var loader: ImageLoader
13
    private let placeholder: Placeholder
14
    private let image: (UIImage) -> Image
15
 
16
    init(
17
        url: URL,
18
        @ViewBuilder placeholder: () -> Placeholder,
19
        @ViewBuilder image: @escaping (UIImage) -> Image = Image.init(uiImage:)
20
    ) {
21
        self.placeholder = placeholder()
22
        self.image = image
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
                    .resizable()
37
                    .aspectRatio(contentMode: .fit)
38
                    .frame(height: Config.PROFILE_IMAGE_SIZE)
39
                    .clipShape(Circle())
40
                    .overlay(Circle().stroke(Color.white, lineWidth: 4))
41
                    .shadow(radius: 10)
42
            } else {
43
                placeholder
44
            }
45
 
46
        }
47
    }
48
}
49