Все в Какао буферизировано, так что вы можете перемещать, анимировать и корректировать виды, не перерисовывая их. Если вам нужно перерисовывать представление снова и снова (например, многократно вызывать drawRect: и создавать свою собственную анимацию), вам нужно создать таймер, который срабатывает каждую 1/20 секунды и запускает обновление представления.
Вы можете создать таймер следующим образом:
[NSTimer scheduledTimerWithTimeInterval:1.0/20.0 target:self selector:@selector(animate) userInfo:nil repeats:YES];
Ваша функция обратного вызова (в данном случае "animate") будет выглядеть следующим образом. Если ваша анимация требует бизнес-логики, вы должны поместить ее здесь. Все рисование должно быть сделано в функции drawRect представления.
- (void)animate {
[animatedView setNeedsDisplay: YES];
}
Безопасно вызывать setNeedsDisplay более одного раза за кадр. SetNeedsDisplay устанавливает флаг в представлении и фактически не выполняет никакого рисования. Когда ваш код выполнен и приложение возвращается в основной цикл выполнения, все представления с setNeedsDisplay = YES будут перерисованы.
Надеюсь, это поможет!