Я создаю приложение для рисования на основе векторов, и, будучи действительно векторным, мне нужно иметь «безграничный» холст.Итак, я создал следующую структуру:
UIVIew (canvas view)
|
CALayer (canvas container)
|
CAShapeLayer (the drawn shapes)
...
Каждая фигура, нарисованная пользователем, является CAShapeLayer с назначенным ему CGPath.Когда пользователь уменьшает масштаб контейнера (скажем, контейнер имеет размер около 10000x10000 точек) и рисует новую форму, я получаю точки в масштабе 1, а затем назначаю преобразование масштаба для нового CAShapeLayer (это единственный способ, которым яобнаружил, что работает).
Проблема в том, что в моем приложении я могу нарисовать соединение между двумя объектами, поэтому я использую CAShapeLayer для рисования соединения, но когда уменьшено (скажем, расстояние между двумя фигурами составляет около 5000 точек), я рисую линиюс двумя точками, расстояние которых составляет около 5000 точек.Делая это, я думаю, что трамплин перезапускается.Я читал, что CAShapeLayer кэширует только пиксели нарисованного пути и, возможно, это моя проблема.Поэтому я прошу вашей помощи, ребята, потому что у меня закончились идеи.Есть ли другой подход к рисованию этих огромных фигур и легко с ними работать.
Заранее спасибо.