Мне нужно нарисовать несколько сотен линий и кругов на моем виде, и они продолжают двигаться через функцию таймера, где я вызываю [myView setNeedsDisplay] для обновления вида.
Я подкласс (myView) из UIView и реализую функцию drawRect, чтобы сделать следующее ...
-(void) drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat red[4] = { 1, 0, 0, 1};
CGContextSetLineWidth(context, 1);
CGContextSetShouldAntialias(context, NO);
CGContextSetLineCap(context, kCGLineCapSquare);
CGContextSetStrokeColor(context, red);
// rects is an array of CGRect of size ~200
for (int i = 0; i < N; i++) {
CGContextAddEllipseInRect(context, rects[i]);
}
// points is an array of CGPoint of size ~100
CGContextAddLines(context, points, N);
CGContextStrokePath(context, color);
}
Но это медленная собака. Есть что-то, чего я здесь не хватает?
Создание одного полного чертежа занимает почти 1 секунду