Поскольку все рисование выполняется в представлении drawRect:
, вы можете оптимизировать чертеж только своей диаграммы, чтобы можно было обновить только его часть и использовать setNeedsDisplayInRect:
(минуя область, где должен находиться маркер).
Или вы создаете другой подкласс UIView, который расположен поверх вашего графика и который делает только рисование маркеров на прозрачном фоне.Вероятно, проще и быстрее реализовать.Это также будет иметь еще одно преимущество:
Если вы сделаете этот вид настолько большим, как ограничивающий прямоугольник маркера, вы также можете легко анимировать его, например, плавно увеличивать и уменьшать его.Или немного поверните его (чтобы увидеть эффект, который я имею в виду, выберите меню «Справка» в Mac OS X, введите что-то в поле поиска, например «a»), и отметьте, что маркер рядом с элементом меню немного переместилсявокруг пятна).