Рисование CAShapeLayer с большой CGPath - PullRequest
2 голосов
/ 15 февраля 2011

Я создаю приложение для рисования на основе векторов, и, будучи действительно векторным, мне нужно иметь «безграничный» холст.Итак, я создал следующую структуру:

UIVIew (canvas view)
  |
  CALayer (canvas container)
    |
    CAShapeLayer (the drawn shapes)
    ...

Каждая фигура, нарисованная пользователем, является CAShapeLayer с назначенным ему CGPath.Когда пользователь уменьшает масштаб контейнера (скажем, контейнер имеет размер около 10000x10000 точек) и рисует новую форму, я получаю точки в масштабе 1, а затем назначаю преобразование масштаба для нового CAShapeLayer (это единственный способ, которым яобнаружил, что работает).

Проблема в том, что в моем приложении я могу нарисовать соединение между двумя объектами, поэтому я использую CAShapeLayer для рисования соединения, но когда уменьшено (скажем, расстояние между двумя фигурами составляет около 5000 точек), я рисую линиюс двумя точками, расстояние которых составляет около 5000 точек.Делая это, я думаю, что трамплин перезапускается.Я читал, что CAShapeLayer кэширует только пиксели нарисованного пути и, возможно, это моя проблема.Поэтому я прошу вашей помощи, ребята, потому что у меня закончились идеи.Есть ли другой подход к рисованию этих огромных фигур и легко с ними работать.

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

...