Чертая линии според метода touchesMoved:
и обикновено работи добре. Но когато приближавам изображението и рисувам, начертаните преди това линии се разместват и продължават да стават все по-мъгливи, като в крайна сметка изчезват. Опитах да използвам UIPinchGestureRecognizer
и просто да увелича frame
от myImageView
(само за събития с много докосване), но проблемът възниква и в двете посоки. Ето кода за рисуване:
- (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
}
}
Ето изображението, нарисувано без мащабиране:
И това е изображението, изобразяващо проблема след приближаване с червената стрелка, показваща сегмента, който вече е бил начертан преди приближаването (както е показано в предишното изображение). Изображението е замъглено и разместено:
Може също така да се забележи, че част от линията, начертана към края, не е засегната и феноменът възниква за линии, изтеглени назад във времето. Вярвам, че причината за това е, че атрибутите за размера на изображението се губят, когато увеличавам/намалявам, което вероятно причинява замъгляването и изместването, но не съм сигурен за това!
РЕДАКТИРАНЕ- Качих кратък видеоклип да покаже какво се случва. Това е някак забавно...
РЕДАКТИРАНЕ 2- Ето примерно приложение с един изглед, фокусирано върху проблема.
myImageView
иdrawImage
(и двете саUIImageView
s), но не се получи :( ... - person tipycalFlow   schedule 14.02.2012