Core Plot show «Загрузка» блесна - PullRequest
1 голос
/ 28 сентября 2011

Я использую базовый график (0.4) для рендеринга графика, и он работает нормально. Однако (особенно на iPad) график может занять некоторое время для рендеринга. Я добавил UIActivityIndicatorView на график, который отображается, когда графики начинают рисоваться, но я не могу найти какое-либо событие, которое можно использовать для остановки счетчика.

Я попытался использовать метод numberForPlot и определить, когда запрашивается последняя точка данных, но она вызывается несколько раз для каждой строки в scatterGraph, поэтому я не могу легко это использовать. Есть ли какое-нибудь графическое событие, которое я могу подключить к этому?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2011

Core Plot использует Core Animation для всего рендеринга.Один граф содержит много слоев CA, которые отображаются независимо.-reloadData просто говорит графику обновить свой кеш данных в следующий раз, когда он рисует, и сообщает Core Animation, что его нужно перерисовать.Точно так же простое заключение в скобки вызовов источника данных захватывает только кэширование данных, которое происходит перед рендерингом.Вы бы пропустили фактическое время рисования и никогда не узнали бы, если Core Animation повторно визуализировала график в другое время, например, после изменения размера.

Если вам нужно только время для визуализации графика, а не другоечасти графика, один из способов сделать это - создать подкласс CPTScatterPlot и переопределить метод -renderAsVectorInContext:.Сочетание вызовов super с кодом вашего индикатора активности.

0 голосов
/ 28 сентября 2011

Если вы делаете [graph reloadData] для обновления графика, можете ли вы просто заключить вызов с помощью индикатора запуска / остановки вызовов?Я думаю, что core-plot все делает в главном потоке.

...