2015-09-17 17 views
8

Sto usando il framework ios-charts e voglio creare un marcatore che fluttui sopra il grafico quando tocco e muovo il dito da un lato all'altro. Sto usando un grafico a linee solo per riferimento.Come creare un grafico a virgola mobile con ios-chart

Tuttavia, non riesco a capire come ottenere la posizione del marcatore sul grafico quando lo tocco.

Ho letto sulla sottoclasse di MarkerView ma non funziona. Puoi per favore mostrarmi come ottenere la posizione del punto che compare quando tocchi un grafico ios?

risposta

22

Così ho finalmente ottenuto questo lavoro e ho voluto aggiungerlo alla comunità. Ecco cosa mia tabella assomiglia:

enter image description here

Quando si esegue il dito sul grafico il lettore sopra si sposta e legge il valore dal grafico.

Per arrivare a questo lavoro ho dovuto fare quanto segue:

  1. Nel file si sta implementando il grafico, assicurarsi di includere ChartViewDelegate

  2. quindi implementare la chartValueSelected Metodo.

  3. Se si utilizza il metodo getMarkerPosition, sarà possibile centrare il "marker" ovunque si desideri.

Ecco alcuni esempi di codice:

class MarkerView: UIView { 
    @IBOutlet var valueLabel: UILabel! 
    @IBOutlet var metricLabel: UILabel! 
    @IBOutlet var dateLabel: UILabel! 
} 

let markerView = MarkerView() 

func chartValueSelected(chartView: ChartViewBase, entry: ChartDataEntry, dataSetIndex: Int, highlight: ChartHighlight) { 

    let graphPoint = chartView.getMarkerPosition(entry: entry, highlight: highlight) 

    // Adding top marker 
    markerView.valueLabel.text = "\(entry.value)" 
    markerView.dateLabel.text = "\(months[entry.xIndex])" 
    markerView.center = CGPointMake(graphPoint.x, markerView.center.y) 
    markerView.hidden = false 

} 

markerView è una xib che ho aggiunto manualmente alla vista principale che contiene anche la vista del grafico. markerView è un UIView che contiene tre etichette. Sono le 3.0, le impressioni e Apr che vedi nella foto.

graphPoint è il CGPoint situato sul grafico. È possibile utilizzare la x e la y di graphPoint per riposizionare lo markerView. Qui ho semplicemente mantenuto il valore y dello markerView lo stesso e ho cambiato il suo valore x per farlo muovere avanti e indietro al tocco.

+0

Che cos'è floatingGraphReader ?? la sua classe principale è? – DeviPhone26

+0

Che cosa è floatingGraphReader? –

+0

'floatingGraphReader' è semplicemente l'UIView che contiene tre etichette. Sono le 3.0, le impressioni e Apr che vedi nella foto. L'ho appena aggiunto alla risposta. –