Я создаю приложение, и в одной части я пытаюсь реализовать ручную запись. Я использовал imageView для записи, который будет сохранен и отправлен на сервер в виде pdf. Я применил touch begin, move and end и используя contextAddLineToPoint, я могу создавать строки, когда пользователь записывает материал. Однако. Написание немного важно, и я пытаюсь создать кривые, когда пользователь меняет направление записи, то есть когда написано письмо. Я действительно не хочу реализовывать распознавание рукописного ввода, но просто для сглаживания линии.Как создать кривую для строк при рукописном
Я создал «буфер», состоящий из массива, который удерживает две промежуточные точки, когда пользователь перемещает касание. следующим образом:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
lastPoint = [touch locationInView:drawImage];
NSLog(@"first touch:%@",[NSValue valueWithCGPoint:lastPoint]);
}
drawImage - это изображениеView, которое я использую для записи на btw. Затем идет на ощупь поколеблется:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
currentPoint = [touch locationInView:drawImage];
if (movementCount<2) {
[pointHolderArray addObject:[NSValue valueWithCGPoint:currentPoint]];
movementCount ++;
NSLog(@"pointHolderArray: %@",pointHolderArray);
}else
{
NSLog(@"buffer full");
UIGraphicsBeginImageContext(drawImage.frame.size);
[drawImage.image drawInRect:drawImage.frame];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), YES);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 3.0);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.3, 0.5, 0.2, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(),[[pointHolderArray objectAtIndex:0]CGPointValue].x,[[pointHolderArray objectAtIndex:0]CGPointValue].y);
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), [[pointHolderArray objectAtIndex:0]CGPointValue].x,[[pointHolderArray objectAtIndex:0]CGPointValue].y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), [[pointHolderArray objectAtIndex:1]CGPointValue].x,[[pointHolderArray objectAtIndex:1]CGPointValue].y);
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), [[pointHolderArray objectAtIndex:1]CGPointValue].x,[[pointHolderArray objectAtIndex:1]CGPointValue].y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
lastPoint = [touch previousLocationInView:drawImage];
[pointHolderArray removeAllObjects];
movementCount=0;
}
}
Как вы можете видеть, каждый раз, когда две точки были сохранены, я затем провести линию между ними. Это сделало рисунок немного сложнее, и линия еще более оборвана.
Может кто-нибудь помочь с проблемой, я очень новичок в области графики в iOS, и не уверен, что я даже использую правильный API, и если я даже должен использовать imageView.
Большое спасибо заранее
Dude Большого спасибо за подсказку об использовании pangesture recognisers !! Я бы никогда не подумал о смешении этих двух вместе! Еще не пробовал, но уверен, похоже, что это сработает :) – Septronic
Да, я попробовал, и кривая вышла, как кривая арбуза !! :) Спасибо – Septronic