Estoy dibujando líneas de acuerdo con el método touchesMoved:
y normalmente funciona bien. Pero cuando hago un acercamiento a la imagen y dibujo, las líneas dibujadas anteriormente se desplazan y se vuelven cada vez más borrosas, hasta desaparecer. He intentado usar UIPinchGestureRecognizer
y simplemente aumentar el frame
de myImageView
(solo para eventos multitáctiles), pero el problema se produce en ambos sentidos. Aquí está el código para el dibujo:CGContextStrokePath no funciona al hacer zoom y dibujar imágenes
- (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
}
}
aquí es la imagen dibujada encima sin zoom:
Y esta es la imagen que representa el problema después de hacer zoom-in con la flecha roja que muestra el segmento de eso ya se dibujó antes de acercar (como se muestra en la imagen anterior). La imagen es borrosa y desplazado tanto:
También se puede notar que una parte de la línea trazada hacia el final no se ve afectado y el fenómeno se produce por las líneas trazadas en el tiempo. Creo que la razón para esto es que los atributos de tamaño de imagen se pierden cuando hago zoom in/out, lo que probablemente causa el desenfoque y el cambio, ¡pero no estoy seguro de eso!
EDIT - He cargado a short video para mostrar lo que está sucediendo. Es algo entretenido ...
EDITAR 2- Aquí está a sample single-view app centrándose en el problema.
Creo que esto podría tener algo que ver con el contentMode de la vista que está dibujando. Pruebe UIViewContentModeRedraw? – kevboh
Intenté configurarlo para 'myImageView' y' drawImage' (ambos son 'UIImageView's) pero no funcionó :(... – tipycalFlow
@kevboh He subido un video (y lo agregué en la respuesta) que podría darte una mejor idea del problema ... – tipycalFlow