所以我试图用下面的代码绘制一个条形图:
HStack(alignment: .bottom) {
ForEach(0..<values.count) { idx in
let max = values.max() ?? 0
VStack {
Text(labels[idx])
.font(.caption)
.rotationEffect(.degrees(-60))
RoundedRectangle(cornerRadius: 5)
.fill(Color.white)
.frame(width: 20, height: CGFloat(values[idx]) / CGFloat(max) * geo.size.height * 0.6)
Text(xAxisLabels[idx])
.font(.caption)
}
}
}.frame(maxWidth: .infinity, maxHeight: .infinity)
.cornerRadius(10)
.padding(.bottom, 20)
}
备注行:
.frame(width: 20, height: CGFloat(values[idx]) / CGFloat(max) * geo.size.height * 0.6)
我正在根据HealthKit中的值("values"变量(为条形图动态分配高度。
我只是想知道有没有办法解决这个问题?我有以前的版本,条形图可以使用静态变量显示,从错误中我可以理解,它不喜欢潜在高度不是静态的。
尝试在此处将0替换为1:
let max = values.max() ?? 1
这将防止在刷新视图时被0除。