Анимация рисования линии программно с использованием Quartz 2d на IOS - PullRequest
0 голосов
/ 21 декабря 2010

Я пытаюсь нарисовать анимированную растущую линию, используя Quartz 2d, постепенно добавляя точки к существующей линии.Я начал рисовать новую линию, в методе drawRect объекта UIView, получив CGContextRef, установив его свойства рисования и переместив первую точку на (0,0).

CGContextRef context= UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context,[UIColor blueColor].CGColor);
CGContextSetLineWidth(context, 2);
CGContextMoveToPoint(context,0,0);

позже, в моемпри следующем вызове drawRect я попытался расширить эту строку, снова получив CGContextRef и добавив к нему новую точку.

GContextRef context= UIGraphicsGetCurrentContext();
CGContextAddLineToPoint(context,x,y);

, но кажется, что текущий CGContextRef не имеет записи моего предыдущегоКоманда CGContextMoveToPoint из последнего вызова drawRect, следовательно, не имеет никаких ссылок на то, что я уже начал рисовать линию.

Я что-то здесь не так делаю?есть ли способ обновить уже нарисованную линию?

Ответы [ 2 ]

1 голос
/ 21 декабря 2010

Вам нужно обработать каждый вызов drawRect так, как если бы он начинался с нуля.Даже если вас только попросят обновить подчиненное представление, вы должны предполагать, что любое состояние, связанное с графическим контекстом, такое как положение рисования и цвета, будет сброшено.Так что в вашем случае вам нужно отслеживать начальную позицию и перерисовывать всю строку каждый раз.

0 голосов
/ 15 мая 2012

Я думаю, что лучший подход - анимировать какой-нибудь тонкий UIView.Смотри мой ответ здесь .
Если вам нужно больше, чем просто горизонтальная линия, поверните этот вид.Я думаю, что это лучше для производительности.

...