Вы должны быть в состоянии достичь этого, используя CALayer
s.Вам нужно будет добавить фреймворк QuartzCore
, чтобы это работало.Идея состояла бы в том, чтобы представить каждый рисунок как один CALayer
.Если ваши рисунки являются изображениями, вы можете использовать свойство contents
, чтобы назначить рисунок слою.Вам нужно будет присвоить объект CGImageRef
, который вы можете легко получить, используя свойство CGImage
объекта UIImage
.
Вам понадобится вид, который будет вашей чертежной доской.Поскольку вы хотите иметь возможность перемещать и изменять размеры рисунков, вам придется прикрепить объект UIPanGestureRecognizer
для перемещения слоев и UIPinchGestureRecognizer
для увеличения и уменьшения рисунков.Поскольку распознаватели могут быть присоединены только к представлению, а не к слоям, нетривиальная часть, когда вызываются обработчики жестов, будет идентифицировать, каким подуровнем представления они манипулируют.Вы можете получить прикосновения для жестов, используя locationInView:
для жеста панорамирования и locationOfTouch:inView:
для жеста пинча, с аргументом представления, являющимся видом, в котором выполняется жест, который можно получить с помощью gesture.view
.Как только вы определите слой в фокусе, вы можете использовать translationInView:
для жеста панорамирования, чтобы переместить слой, и использовать scale
свойство жеста пинч, чтобы преобразовать слой.
В то время как CALayer
объекты являются легкими объектамиВы можете столкнуться с проблемами, когда их слишком много.Итак, стресс-тест вашего приложения.Другим препятствием является то, что изображения, как правило, занимают много памяти, поэтому вы не сможете получить много рисунков.