如何在 SwiftUI 中绘制圆的径向切片?(即饼图之类)

And*_*Ana 3 swift swiftui

我正在尝试在 SwiftUI 中创建一个圆的切片。我正在尝试修剪,但它的行为很奇怪。它从该区域的最外点开始选取数量。这样0.5就是半圆就可以了。但圆的 0.25 并不是四分之一的切片(就像天真的编程新手所猜测的那样),而是以非逻辑方式填充的形状。似乎也没有办法修改它。通过使用 Circle(radius: x, angle: y) 来定义 Circle 是明智的,这样 angle: 360 将是一个完整的圆。需要在 SwiftUI 中自己编程吗?

import SwiftUI

struct CircleView: View {
    var body: some View {
        let trimValue: CGFloat = 0.25
        Circle()
            .trim(from: 0, to: trimValue)
            .fill(Color.red)
            
    }
}

struct CircleView_Previews: PreviewProvider {
    static var previews: some View {
        CircleView()
    }
}
Run Code Online (Sandbox Code Playgroud)

四分之一圆 半圆

jn_*_*pdx 9

使用Path带有圆弧的 a 是执行此操作的正常方法:

struct PieSegment: Shape {
    var start: Angle
    var end: Angle

    func path(in rect: CGRect) -> Path {
        var path = Path()
        let center = CGPoint(x: rect.midX, y: rect.midY)
        path.move(to: center)
        path.addArc(center: center, radius: rect.midX, startAngle: start, endAngle: end, clockwise: false)
        return path
    }
}

struct ContentView: View {
    @State var fileData: Data?
    
    var body: some View {
        PieSegment(start: .zero, end: .degrees(45))
    }
}
Run Code Online (Sandbox Code Playgroud)