Swift:将值绘制到线性图上

时间:2019-05-09 14:30:04

标签: ios swift core-bluetooth ios-charts

我正在尝试使用Pod'Charts'将值绘制为线性图,我在一秒钟内通过蓝牙硬件接收了200个值,我需要全部绘制它们,我面临的问题是,有一个很大的绘图延迟,图形非常生涩。

这是我的图形设置功能:

@IBOutlet weak var chartView: LineChartView!

 func setChart(){
        let set_a: LineChartDataSet = LineChartDataSet(values: [ChartDataEntry](), label: "a")
        set_a.drawCirclesEnabled = false
        set_a.setColor(.blue)
        chartView.data = LineChartData(dataSet: set_a)
        chartView.setScaleEnabled(true)
        chartView.isUserInteractionEnabled = true
        chartView.setDragOffsetX(200)
        chartView.scaleYEnabled = true
    }

这是图表更新功能:

    var i=0

    func updateCounter(){
        if !stopped{
            if recieve{
                chartView.data?.addEntry(ChartDataEntry(x: Double(i), y: Double(Constants.values[i])), dataSetIndex: 0)
                chartView.notifyDataSetChanged()
              chartView.moveViewToX(Double(i+40))
            i+=1
            }
        }else{return}
    }

这是我接收值的地方:

    func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?){
        if let data = characteristic.value
        {
            var values = [UInt8](repeating: 0, count: data.count)
            (data as NSData).getBytes(&values, length:data.count)
            for value in values
            {
                Constants.values.append(Double(value))
            }
            recieve = true
            print(values)
            updateCounter()
        }

    }

0 个答案:

没有答案