Я пытаюсь спроектировать пользовательский интерфейс для обрезки изображений в ОС iphone и подозреваю, что я иду трудным путем. Моя цель - в значительной степени то, что дуэт Tapbots сделал с Pastebot. В этом приложении они затемняют исходное изображение, но обеспечивают подвижное и изменяемое представление обрезки, а изображение, которое вы обрезаете, находится в масштабируемом виде с прокруткой; при изменении размера или перемещении нижележащего изображения вид обрезки корректируется.
Я смоделировал составное изображение, которое даст представление о дизайне, который мне нужен, наряду с тем, как у меня сейчас настроена иерархия представлений.
альтернативный текст http://grab.by/3TN4
Подход, с которого я начал, заключается в следующем: UIImageView с изображением для обрезки находится в виде прокрутки, простой вид UIView с черной заливкой и подходящей настройкой прозрачности / альфа добавлен перед изображением. Затем я использую пользовательский UIView, который является родственным для scrollview на более высоком уровне, который реализует метод drawRect: и по большей части вызывает CGImageCreateWithImageInRect, чтобы получить часть растрового изображения изображения, которая соответствует позиции представления обрезки, и рисует, что к CGContext.
в viewcontroller Я использую методы UIScrollViewDelegate для отслеживания прокрутки и передачи этих изменений в пользовательский режим обрезки UIView, чтобы он оставался синхронизированным с прокруткой contentOffset. Это многое, наконец, работает. Но попытка сохранить синхронизацию при изменении масштаба прокрутки прокрутки - это когда я решил, что должен обратиться за помощью.
Ищете предложения или рекомендации. Мой первоначальный подход просто кажется больше работы, чем требуется.
Может ли это быть сделано с помощью маскирующего слоя в ImageView? И если да, то как мне настроить отслеживание для перемещения и изменения размера прямоугольника обрезки? Мой опыт работы со слоями не нулевой, но пока очень ограниченный.