Proyectos de Subversion Iphone Microlearning

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
            if loader.image != nil {
34
                image(loader.image!)
35
                    .resizable()
36
                    .aspectRatio(contentMode: .fit)
37
                    .frame(height: Constants.PROFILE_IMAGE_SIZE)
38
                    .clipShape(Circle())
39
                    .overlay(Circle().stroke(Color.white, lineWidth: 4))
40
                    .shadow(radius: 10)
41
            } else {
42
                placeholder
43
            }
44
        }
45
    }
46
}
47