Я использую https://github.com/danielgindi/Charts для создания графика.После того, как пользователь прокрутил диаграмму, я хотел получить точку данных, ближайшую к середине диаграммы:
let currentMinX = self.chartView.lowestVisibleX
let currentMaxX = self.chartView.highestVisibleX
let midX = currentMinX + (currentMaxX - currentMinX)/2
let currentMinY = self.chartView.chartYMin // y is not scrollable, so I can use it
let currentMaxY = self.chartView.chartYMax
let midY = currentMinY + (currentMaxY - currentMinY)/2
let midPoint = CGPoint(x: midX, y: midY)
let closestPoint = chartView.getHighlightByTouchPoint(midPoint)
print("\(closestPoint?.x ?? 0)-\(closestPoint?.y ?? 0)")
К сожалению, closestPoint - это ближайший к левому нижнему углу видимой области, а не ближайший к нему.к середине.Это почему?Фильм отладки: https://youtu.be/YTYqt5o6ifQ
РЕДАКТИРОВАТЬ: Очевидно, преобразователь возвращал неправильное значение: я исправил его, изменив метод преобразователя:
@objc open func valueForTouchPoint(x: CGFloat, y: CGFloat) -> CGPoint
{
return CGPoint(x: x, y: y)//CGPoint(x: x, y: y).applying(pixelToValueMatrix)
}