Это очень сложная задача, с которой я когда-либо сталкивался. Я рисую линии, когда палец двигается. Линии создаются таким образом, что они обходят пресет изображений в моем чертеже. Я использую код ниже.
Код: -
-(void) paintLinesinContext:(CGContextRef)context{
for (Line *line in lines) {
NSMutableArray *arrayOfPoints=[line getPointsArray];
CGContextBeginPath(context);
int numberofPoints=[arrayOfPoints count] ;
CGPoint points[numberofPoints];
int index=0;
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
if (line==tmpline) {
float dashPhase=10;
float dashPattern[3]={5,5};
CGContextSetLineDash(context, dashPhase, dashPattern, 2);
CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
}
for (NSValue *pointObject in arrayOfPoints) {
points[index]= [pointObject CGPointValue];
if (index==0) {
CGContextMoveToPoint(context, points[index].x,points[index].y);
}
else {
CGContextAddLineToPoint(context, points[index].x, points[index].y);
}
index++;
}
CGContextStrokePath(context);
float dashPhase=10;
float dashPattern[3]={1,0};
CGContextSetLineDash(context, dashPhase, dashPattern, 2);
}
}
Моя проблема в том, что мое приложение зависло из-за нехватки памяти. Когда я изучил его с помощью выделения в инструментах, я заметил, что CGPath занимает больше памяти. Хочешь верь, хочешь нет. Мое приложение работает на 48 МБ и переходит на 96 МБ, из которых 90 МБ - CGPath. Я не знаю, в чем причина Кто-нибудь может мне помочь.