Мне удалось добиться построения линий на графике, используя iOS -Charts . Точки x являются общими для всех линий, но точки y различны.
Когда я перемещаю курсор по графику, я хочу, чтобы все остальные круги также перемещались одним перетаскиванием.
Поэтому, когда я выбираю любую из точек x среди любых 3 строк, я хочу highlight.xPx
& highlight.yPx
других 2 строк.
Вот пример
let dysLineEntries: [ChartDataEntry] = [ChartDataEntry(x: 20.0, y: 120.0),
ChartDataEntry(x: 30.0, y: 100.0),
ChartDataEntry(x: 40.0, y: 130.0)]
let sysLineEntries: [ChartDataEntry] = [ChartDataEntry(x: 20.0, y: 70.0),
ChartDataEntry(x: 30.0, y: 80.0),
ChartDataEntry(x: 40.0, y: 90.0)]
let pulseLineEntries: [ChartDataEntry] = [ChartDataEntry(x: 20.0, y: 90.0),
ChartDataEntry(x: 30.0, y: 80.0),
ChartDataEntry(x: 40.0, y: 70.0)]
Итак, вот как я пытаюсь получить точку пикселя, используя Transformer
, но она возвращает ту же координату, которую я передаю ей.
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {
let index = Int(entry.x)
if transformer == nil {
transformer = Transformer(viewPortHandler: chartView.viewPortHandler)
}
for (dataSetIndex, dataSet) in chartView.data!.dataSets.enumerated() {
let item = (dataSet as! LineChartDataSet).entries[index]
switch dataSetIndex {
case 0: // dysLineEntries
var point = CGPoint(x: item.xPx, y: item.yPx)
transformer!.pointValueToPixel(&point)
case 1: // sysLineEntries
var point = CGPoint(x: item.x, y: item.y)
transformer!.pointValueToPixel(&point)
case 2: // pulseLineEntries
var point = CGPoint(x: item.x, y: item.y)
transformer!.pointValueToPixel(&point)
default:
break
}
}
}
Я хочу переместить желтый и красный круг вместе с синий круг на их уважаемой линии в той же позиции x.
В основном я хочу точки в пикселях, потому что мне нужно расположить imageView в центре на всех 3 строках.
![enter image description here](https://i.stack.imgur.com/REVyh.png)