Надеюсь, я правильно понимаю ваш вопрос. Вы хотите нарисовать линию на UIImageView и иметь возможность удалить эту линию позже, правильно?
Ну, почему бы не выделить прозрачный UIView только для рисования и расположить его над UIImageView? Нарисуйте его метод -drawRect. Теперь, если вы просто сохраняете NSMutableArray каждой выполняемой вами операции рисования, становится легко удалить то, что вы нарисовали, вызывая [theArray removeLastObject] или [theArray removeAllObjects] до вызова метода drawRect. Когда вы удовлетворены своим рисунком в отдельном UIView, вы можете объединить два вида, добавив UIView в качестве подпредставления UIImageView, а затем получить «сплющенный» UIImage из UIImageView следующим образом:
//myImageView is your UIImageView
//myDrawingView is the transparent UIView that you drew on
[myImageView addSubview:myDrawingView];
//Create new image container to hold the flattened image
UIImage* newImage;
//Now flatten the graphics
UIGraphicsBeginImageContext(myImageView.bounds.size);
[myImageView.layer renderInContext:UIGraphicsGetCurrentContext()];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Теперь у вас есть новый UIImage, который вы можете добавить в UIImageViews и делать с ним все, что захотите.
ВАЖНО:
1) Каждый раз, когда вызывается ваш метод -drawRect, все ваши рисунки стираются.
2) Вы не вызываете -drawRect напрямую. Вместо этого используйте [self setNeedsDisplay], чтобы нарисовать ваше представление.