У меня есть вид внутри UIScrollView
, который имеет CATiledLayer
(mapView).
Карта может масштабироваться и прокручиваться.
Метод viewForZoomingInScrollView
: из UIScrollViewDelegate
возвращает mapView.Поверх этого представления (внутри UIScrollView
) у меня был другой вид (overlayView), где мне нужно нарисовать количество путей (CGPath
, до 40).Но производительность в этом случае довольно плохая.Как я могу улучшить это?Как правильно рисовать в представлении с прокруткой?
Что я уже пытался сделать:
- Я пытался отобразить контекст представления в
drawRect:
и drawLayer:inContext:
методы (в этом случае мне нужно сохранить постоянный размер overlayView
, в противном случае он падал, когда масштабирование слишком велико - но это означает, что мне нужно перерисовывать каждый раз, когда пользователь прокручивает или увеличивает).В этом случае приложение работает медленно, хотя время рисования всех имеющихся путей составляет около 0,02 сек. - Попытка сделать
overlayView
как CATiledLayer
, но в этом случае оригинальный mapView стал очень медленным,Плитки overlayView загружаются только после загрузки всех плиток из mapView.Похоже, что все экземпляры CATiledLayers
используют один и тот же поток для рендеринга или как-то блокируют друг друга. - Попытка нарисовать каждый путь в отдельном представлении с помощью
CAShapeLayer
.Очень медленно, я думаю, это из-за больших накладных расходов при просмотре рисунка.