如何在SwiftUI中绘制圆形的径向切片?(即像饼状图一样)

3
我正在尝试在SwiftUI中创建圆的切片。我正在尝试使用trim,但它的行为很奇怪。它选择从区域最外部点开始的数量。因此,0.5是一个半圆,可以。但是0.25的圆并不是一个四分之一的切片(像一个天真的编程新手会猜测的那样),而是以非逻辑的方式填充的形状。似乎也没有一种方法来修改这个问题。定义一个圆,例如Circle(radius: x, angle: y)将是明智的,这样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()
    }
}

Quarter of a Circle Half a Circle

1个回答

9

使用带有弧形的 Path 是正常的做法:

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))
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接