Преобразование точки диаграммы coreplot в координатное пространство супервизора

Мы используем CorePlot для рисования диаграммы. По оси y мы рисуем температуру.

Учитывая значение температуры, мы хотим найти y coordinate, который соответствует этой температуре в координатном пространстве UIViewController.

Наша иерархия представлений организована следующим образом:

_ UIViewController's main view (self.view)
 \_ UIScrollView
   \_ ChartView

Читая документацию, мы нашли это должно делать именно то, что мы хотим.

Теперь, поскольку этот метод вернет позицию Y в системе координат ChartView, мы используем - [UIView convertPoint: toView:] для перевода из ChartView в UIScrollView, а затем в главное представление UIViewController:

//self is the UIViewController
CGPoint *originalPoint = [self.temperatureAxis viewPointForCoordinateDecimalNumber:temperature];
CGPoint *scrollViewConvertedPoint = [self.chartView convertPoint:originalPoint toView:self.scrollView];
CGPoint *finalPoint = [self.scrollView convertPoint:scrollViewConvertedPoint toView:self.view];

Используя этот метод, мы получаем неверные значения, как показано на следующем рисунке.

введите описание изображения здесь

Заранее спасибо.


person Nicolas Jakubowski    schedule 02.04.2015    source источник


Ответы (1)


originalPoint находится в координатном пространстве области графика. Преобразуйте его в координатное пространство графика перед преобразованием вида.

CGPoint graphPoint = [graph convertPoint:originalPoint 
                               fromLayer:graph.plotAreaFrame.plotArea];
person Eric Skroch    schedule 03.04.2015
comment
Привет, Эрик, спасибо, что нашли время ответить. К сожалению, graphPoint после разговора приводит к тому же результату, что и originalPoint. Есть предположения? - person Nicolas Jakubowski; 03.04.2015
comment
Извините, я привык использовать методы пространства графика для преобразования координат чертежа и обратно. Те действительно используют площадь сюжета. Замени plotArea на self.temperatureAxis в моем ответе, чтобы преобразовать точку, возвращенную методом оси. - person Eric Skroch; 04.04.2015