Нарисуйте путь в представлении прокрутки - PullRequest
1 голос
/ 22 декабря 2011

У меня есть вид внутри UIScrollView, который имеет CATiledLayer (mapView).

Карта может масштабироваться и прокручиваться.

Метод viewForZoomingInScrollView: из UIScrollViewDelegate возвращает mapView.Поверх этого представления (внутри UIScrollView) у меня был другой вид (overlayView), где мне нужно нарисовать количество путей (CGPath, до 40).Но производительность в этом случае довольно плохая.Как я могу улучшить это?Как правильно рисовать в представлении с прокруткой?

Что я уже пытался сделать:

  1. Я пытался отобразить контекст представления в drawRect: и drawLayer:inContext: методы (в этом случае мне нужно сохранить постоянный размер overlayView, в противном случае он падал, когда масштабирование слишком велико - но это означает, что мне нужно перерисовывать каждый раз, когда пользователь прокручивает или увеличивает).В этом случае приложение работает медленно, хотя время рисования всех имеющихся путей составляет около 0,02 сек.
  2. Попытка сделать overlayView как CATiledLayer, но в этом случае оригинальный mapView стал очень медленным,Плитки overlayView загружаются только после загрузки всех плиток из mapView.Похоже, что все экземпляры CATiledLayers используют один и тот же поток для рендеринга или как-то блокируют друг друга.
  3. Попытка нарисовать каждый путь в отдельном представлении с помощью CAShapeLayer.Очень медленно, я думаю, это из-за больших накладных расходов при просмотре рисунка.
...