Я рисую линии в соответствии с методом touchesMoved:
и нормально работает нормально. Но когда я увеличиваю изображение и рисую, ранее нарисованные линии смещаются и становятся все более размытыми, в конечном счете исчезающими. Я попытался использовать UIPinchGestureRecognizer
и просто увеличил frame
из myImageView
(только для событий с несколькими касаниями), но проблема возникает в обоих направлениях. Вот код для рисования:CGContextStrokePath не работает при масштабировании и рисовании изображений
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray *allTouches = [touches allObjects];
int count = [allTouches count];
if(count==1){//single touch case for drawing line
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:myImageView];
UIGraphicsBeginImageContext(myImageView.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0, myImageView.frame.size.width, myImageView.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 2.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
lastPoint = currentPoint;
}
else{//multi touch case
// handle pinch/zoom
}
}
Вот изображение обращается за без масштабирования:
И это изображение с изображением проблемы после масштабирования в с красной стрелкой показывает сегмент которая уже была сделана до масштабирования (как показано на предыдущем изображении). Изображение как размытое и перемещенный:
Также можно заметить, что часть линии, проведенную к концу не влияет и явление имеет место для линий, проведенных во время. Я считаю, что причина в том, что атрибуты размера изображения теряются, когда я увеличиваю/уменьшаю масштаб, что, вероятно, вызывает размытие и смену, но я не уверен в этом!
EDIT - Я загрузил a short video, чтобы показать, что происходит. Это своего рода развлечение ...
EDIT 2- Здесь a sample single-view app сфокусировавшись на проблеме.
Я думаю, что это может иметь какое-то отношение к contentMode представления, в которое вы входите. Попробуйте UIViewContentModeRedraw? – kevboh
Я попытался установить его для 'myImageView' и' drawImage' (оба являются 'UIImageView'), но это не сработало :(... – tipycalFlow
@kevboh Я загрузил видео (и добавил в ответ), который мог бы дайте вам лучшее представление о проблеме ... – tipycalFlow