Ответ 1
Если у вас есть путь безье, сохраненный в другом месте, это должно работать:
Edit
Посмотрев на отредактированный код, происходит то, что при закрытии пути, который вы рисуете, закрывается, поэтому вы получаете строку, а не форму, поскольку у вас есть только две точки.
Один из способов - создать путь, по которому перемещаются ваши точки, но инсульт и заполнить копию этого пути. Например это непроверенный код, я пишу его прямо в
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
secondPoint = firstPoint;
firstPoint = [touch previousLocationInView:self];
currentPoint = [touch locationInView:self];
CGPoint mid1 = midPoint(firstPoint, secondPoint);
CGPoint mid2 = midPoint(currentPoint, firstPoint);
[bezierPath moveToPoint:mid1];
[bezierPath addQuadCurveToPoint:mid2 controlPoint:firstPoint];
// pathToDraw is an UIBezierPath * declared in your class
pathToDraw = [[UIBezierPath bezierPathWithCGPath:bezierPath.CGPath];
[self setNeedsDisplay];
}
И тогда ваш код чертежа может:
- (void)drawRect:(CGRect)rect {
UIColor *fillColor = [UIColor redColor];
[fillColor setFill];
UIColor *strokeColor = [UIColor blueColor];
[strokeColor setStroke];
// This closes the copy of your drawing path.
[pathToDraw closePath];
// Stroke the path after filling it so that you can see the outline
[pathToDraw fill]; // this will fill a closed path
[pathToDraw stroke]; // this will stroke the outline of the path.
}
Есть несколько способов сделать touchesEnded
, и это может быть сделано более результативным, но вы получите идею.