ios 如何在SwiftUI图表中更改BarMarks之间的间距

rwqw0loc  于 2023-05-19  发布在  iOS
关注(0)|答案(1)|浏览(153)

如何在SwiftUI图表中更改BarMarks之间的间距。似乎没有这方面的文件。这是我的图表,当我把它放在ScrollView中时,它变得拥挤:

ScrollView(.vertical) {
    Chart {
        ForEach(0...csv.rows.count-1, id: \.self) { i in
            let movie = csv.rows[i][0]
            let rating = Double(csv.rows[i][2]) ?? 0
            BarMark(
                x: .value("Rating", rating),
                y: .value("Movie", movie),
                width: 30
            )
            .annotation(position: .trailing) {
                Text(String(format: "%.0f%", rating))
                .foregroundColor(Color.gray)
               .font(.system(size: 12, weight: .bold))
            }
            .foregroundStyle(.linearGradient(
                colors: [.mint, .green],
                startPoint: .leading,
                endPoint: .trailing)
            )
            .cornerRadius(10)
        }
    }
    .chartXAxisLabel("Rating")
    .chartYAxisLabel("Movie")
}
xwmevbvl

xwmevbvl1#

Chart适应tp给它的空间,不幸的是ScrollView只提供最小高度。因此,您必须根据条目的数量为图表添加定义的高度,例如。就像这样:

ScrollView(.vertical) {
    Chart {
        ForEach(0...csv.rows.count-1, id: \.self) { i in
            let movie = csv.rows[i][0]
            let rating = Double(csv.rows[i][2]) ?? 0
            BarMark(
                x: .value("Rating", rating),
                y: .value("Movie", movie),
                width: 30
            )
            .annotation(position: .trailing) {
                Text(String(format: "%.0f%", rating))
                .foregroundColor(Color.gray)
               .font(.system(size: 12, weight: .bold))
            }
            .foregroundStyle(.linearGradient(
                colors: [.mint, .green],
                startPoint: .leading,
                endPoint: .trailing)
            )
            .cornerRadius(10)
        }
    }
    .chartXAxisLabel("Rating")
    .chartYAxisLabel("Movie")

    .frame(height: csv.rows.count * 60) // << HERE

}

相关问题