生成图表的颜色渐变

问题描述

我正在制作一个小的饼图,我希望图表中的每个条目变得越来越小,饼图切片越小。我必须生成一个UIColor数组才能为图表着色。

这是我现在拥有的:

for i in 0..<entries.count {
    let percent = 1.0 - (CGFloat(i - 1)/CGFloat(entries.count))
    dataSet.colors.append(UIColor.systemPurple.withAlphaComponent(percent))
}

生成以下内容

bad example of pie chart

我希望图表中的颜色更像这样:(对不起,我只是在Google表格中快速举例了)

good pie chart

有什么想法吗?

解决方法

尝试使用此解决方案。

struct SetUpWorkoutView: View {
        
        var body: some View {
            NavigationView {
                List {
                    ForEach(sessionTypes) { sessionType  in
                    NavigationLink(destination: LiveWorkoutView(sessionType: sessionType)) {
                        SessionTypeRow(name: sessionType.stringValue)
                    }
                }
            }
        }


 struct LiveWorkoutView: View {
     var body: some View {
    VStack(alignment: .leading) { }
      }.onAppear(perform: {
                    print("on appear called in LiveWorkoutView")
      }
    }
   }
}

@main
struct SwiftUITestApp: App {

    var body: some Scene {
        WindowGroup {
            TabView {
                SetUpWorkoutView()
                WatchSettingsView()
            }
            .tabViewStyle(PageTabViewStyle())
        }
    }
}

您还可以根据需要将0.1的差值更改为任何分数值,例如0.15或0.2等。

,

您可能要使用HSB等其他颜色模型,并在颜色之间更改这些设置中的一项或多项。在您的情况下,您似乎正在使用明亮的紫色,并且希望将饱和度从100%更改为0%。

然后您可以使用UIColor初始化程序init(hue:saturation:brightness:alpha:)

创建颜色

稍微修补一下,颜色为300,亮度为100%,饱和度值为100%,80%,60%,40%,20%和0%的颜色看起来不错。