2015-09-17 2 views
8

J'utilise le framework ios-charts et je veux créer un marqueur qui flotte sur le graphique lorsque je touche et déplace mon doigt d'un côté à l'autre. J'utilise un graphique linéaire juste pour référence. Cependant, je n'arrive pas à comprendre comment obtenir la position du marqueur sur le graphique quand je le touche.Comment créer un marqueur de graphique flottant avec ios-charts

J'ai lu à propos de sous-classer MarkerView mais cela ne fonctionne pas. Pouvez-vous s'il vous plaît me montrer comment obtenir la position du point qui apparaît lorsque vous touchez un ios-chart?

Répondre

22

J'ai finalement réussi à faire fonctionner ceci et je voulais l'ajouter à la communauté. Voici ce que mon tableau ressemble à:

enter image description here

Lorsque vous exécutez votre doigt sur le graphique ci-dessus le lecteur se déplace et lit la valeur du tableau.

Pour obtenir ce travail que je devais faire ce qui suit:

  1. Dans le fichier que vous implémentez le graphique, assurez-vous d'inclure ChartViewDelegate

  2. mettre en œuvre ensuite le chartValueSelected méthode. Si vous utilisez ensuite la méthode getMarkerPosition, vous pouvez centrer votre "marqueur" où vous voulez.

Voici quelques exemples de code:

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 est un xib que j'ai ajouté manuellement à la vue principale qui contient également le point de vue graphique. markerView est un UIView qui contient trois étiquettes. C'est le 3.0, les impressions et Apr que vous voyez dans l'image.

graphPoint est le CGPoint situé sur le graphique. Vous pouvez utiliser les x et y du graphPoint pour repositionner votre markerView. Ici, j'ai simplement gardé la valeur y du markerView le même et j'ai changé sa valeur x pour le faire bouger d'avant en arrière au toucher.

+0

Qu'est-ce que floatingGraphReader ?? sa classe principale est? – DeviPhone26

+0

Qu'est-ce que floatingGraphReader? –

+0

'floatingGraphReader' est simplement l'UIView qui contient trois étiquettes. C'est le 3.0, les impressions et Apr que vous voyez dans l'image. Juste ajouté cela à la réponse. –