如何更新 IOS Charts, danielgindi/Charts 中的限制线

Posted

技术标签:

【中文标题】如何更新 IOS Charts, danielgindi/Charts 中的限制线【英文标题】:How do I update the limit lines in IOS Charts, danielgindi/Charts 【发布时间】:2018-07-10 07:10:31 【问题描述】:

所以我添加了几条限制线。

func addLimitLines() 
    let stopLoss = ChartLimitLine(limit: Double(1.70) , label: "stop loss")
    stopLoss.lineWidth = 0.5
    stopLoss.lineColor = .blue
    stopLoss.lineDashLengths = [8.0]
    chartView.rightAxis.addLimitLine(stopLoss)

    let takeProfit = ChartLimitLine(limit: Double(1.68), label: "take profit")
    takeProfit.lineWidth = 0.5
    takeProfit.lineColor = .blue
    takeProfit.lineDashLengths = [8.0]
    chartView.rightAxis.addLimitLine(takeProfit)
    chartView.reloadInputViews()


@IBAction func stopLossChange(_ sender: UISlider) 
   //slider action for updating the stoploss limitline


@IBAction func takeProfitChange(_ sender: UISlider) 
   //slider action for updating the takeprofit limitline

现在我想在移动滑块时更新限制值。

【问题讨论】:

【参考方案1】:

虽然在Chartsandroid 版本中,我们有invalidate() 可以刷新chartView,但在ios 中我看不到它可用。在 iOS 中,我使用 animate 方法更新数据,我相信您也可以通过以下方式实现此目的,

@IBAction func stopLossChange(_ sender: UISlider) 
    self.updateLineLimit(Double(sender.value), label: "stop loss")


@IBAction func takeProfitChange(_ sender: UISlider) 
    self.updateLineLimit(Double(sender.value), label: "take profit")


private func updateLineLimit(_ value: Double, label: String) 
    if let line = chartView.rightAxis.limitLines.filter( $0.label == label ).first 
        line.limit = value
        chartView.animate(yAxisDuration: 0.00001)
    

【讨论】:

以上是关于如何更新 IOS Charts, danielgindi/Charts 中的限制线的主要内容,如果未能解决你的问题,请参考以下文章

iOS-Charts 如何只允许点击绘制点?

如何在 Swift 语言下使用 iOS Charts API 制作漂亮图表

从饼图中删除所有切片文本 (ios-charts/mpandroidchart)

iOS 图表工具charts之PieChartView

以角度 2 更新 ng-charts 条形图数据集

iOS图表库Charts使用(不常见但很实用的属性)