Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  PieSliceView.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 3/10/22.
6
//
7
 
8
import SwiftUI
9
 
10
@available(OSX 10.15, *)
11
struct PieSlice: View {
12
    var pieSliceData: PieSliceData
13
 
14
    var midRadians: Double {
15
        return Double.pi / 2.0 - (pieSliceData.startAngle + pieSliceData.endAngle).radians / 2.0
16
    }
17
 
18
    var body: some View {
19
        GeometryReader { geometry in
20
            ZStack {
21
                Path { path in
22
                    let width: CGFloat = min(geometry.size.width, geometry.size.height)
23
                    let height = width
24
                    path.move(
25
                        to: CGPoint(
26
                            x: width * 0.5,
27
                            y: height * 0.5
28
                        )
29
                    )
30
 
31
                    path.addArc(center: CGPoint(x: width * 0.5, y: height * 0.5), radius: width * 0.5, startAngle: Angle(degrees: -90.0) + pieSliceData.startAngle, endAngle: Angle(degrees: -90.0) + pieSliceData.endAngle, clockwise: false)
32
 
33
                }
34
                .fill(pieSliceData.color)
35
 
36
                Text(pieSliceData.text)
37
                    .position(
38
                        x: geometry.size.width * 0.5 * CGFloat(1.0 + 0.78 * cos(self.midRadians)),
39
                        y: geometry.size.height * 0.5 * CGFloat(1.0 - 0.78 * sin(self.midRadians))
40
                    )
41
                    .foregroundColor(Color.white)
42
            }
43
        }
44
        .aspectRatio(1, contentMode: .fit)
45
    }
46
}
47
 
48
@available(OSX 10.15, *)
49
struct PieSliceData {
50
    var startAngle: Angle
51
    var endAngle: Angle
52
    var text: String
53
    var color: Color
54
}
55
 
56
@available(OSX 10.15.0, *)
57
struct PieSlice_Previews: PreviewProvider {
58
    static var previews: some View {
59
        PieSlice(pieSliceData: PieSliceData(startAngle: Angle(degrees: 0.0), endAngle: Angle(degrees: 120.0), text: "30%", color: Color.black))
60
    }
61
}