我希望使用4000+图表绘制函数y=(4000+(120*x))*1.6) SwiftUI。让我说,我想把函数从x=1绘制成x=1000。我可以从创建var x=1开始,然后使用for循环:对于1.1000计算y,将结果添加到包含图的所有数据的var中,将1添加到x并重复循环。然后,我可以使用SwiftUI图表LineMark绘制图形。问题是我不知道该怎么做。我知道编程是如何工作的,因为我在年轻的时候就学会了scratch,但是我还不太懂Swift。
另一个问题是,从另一个角度看,数字是变量。我有一个名为SliderView的视图,在这里我创建了变量,您可以用滑块修改它们,我有一个名为ChartView的视图,在这里我想要计算和显示图形。如何在SliderView中使用ChartView中的变量,以及如何在vars中的数字发生变化时更新/刷新图表?
我现在是这样在SliderView中声明vars的:
@State var startingPrice: Double = 4000
@State var manufacturingPrice: Double = 120
@State var profitMargin: Double = 1.6我试着在互联网上搜索答案,但是SwiftUI图表是比较新的,我认为,我找不到任何关于如何用它来绘制函数的教程。
发布于 2022-11-25 17:23:57
您可以将所有变量放在一个模型中并创建一个计算属性。
struct FunctionPlotModel{
var startingPrice: Double = 4000
var manufacturingPrice: Double = 120
var profitMargin: Double = 1.6
var startPoint: Int = 1
var endPoint: Int = 1000
/// Values created by formula
var values: [(x: Double, y: Double)]{
(startPoint...endPoint).map { x in
let y: Double = (Double(startingPrice + Double(manufacturingPrice * Double(x)) * profitMargin) / Double(x))
return (Double(x), y)
}
}
}然后按需要绘制并使用变量。
import SwiftUI
import Charts
@available(iOS 16.0, *)
struct FunctionPlotView: View {
@State var model: FunctionPlotModel = .init()
var body: some View {
VStack{
Slider(value: $model.startingPrice, in: 100...10000)
Slider(value: $model.manufacturingPrice, in: 100...200)
Slider(value: $model.profitMargin, in: 0.5...5)
Chart {
ForEach(model.values, id:\.x){ val in
LineMark(x: .value("x", val.x), y: .value("y", val.y))
}
}.padding()
}
}
}
@available(iOS 16.0, *)
struct FunctionPlotView_Previews: PreviewProvider {
static var previews: some View {
FunctionPlotView()
}
}https://stackoverflow.com/questions/74574931
复制相似问题