İtems inside of the Hstack, not align.
HStack {
Text(i.name)
.frame(width:100)
.padding()
GeometryReader { g in
HStack{
Spacer(minLength: 0)
Rectangle()
.fill(i.color)
.frame(width: self.getWidth(width: g.frame(in: .global).width, value: i.percent) ,height: 10)
Text(String(format: "\(i.percent)", "%.0f"))
.fontWeight(.bold)
.padding(.leading,10)
.frame(width:80)
Spacer()
}.frame(width: 240, height: 30)
}
}
Here, rest of the code
struct Pie: Identifiable {
var id : Int
var percent : CGFloat
var name : String
var color : Color
}
struct DrawShape: View {
var center: CGPoint
var index: Int
var body: some View {
Path {path in
path.move(to: self.center)
path.addArc(center: self.center, radius: 180, startAngle: .init(degrees: self.from()), endAngle: .init(degrees: self.to()), clockwise: false)
}
.fill(data[index].color)
}
func from () - Double {
if index == 0 {
return 0
}
else {
var temp: Double = 0
for i in 0...index-1 {
temp += Double(data[i].percent/100)*360
}
return temp
}
}
func to() - Double {
var temp: Double = 0
for i in 0...index {
temp += Double(data[i].percent / 100) * 360
}
return temp
}
}
var data = [
Pie(id:0, percent: 10, name: "news", color: Color("Black")),
Pie(id:1, percent: 90, name: "sport", color: Color("Blue"))
]