27.12.2013, 16:49. Просмотров 429. Ответов 0
Всем привет, в проекте возникла потребность реализации анимации загрузки с падающими снежинками с пролапсом. немного поразмыслив я подумал что лучше сделать свою вьюху и ручками там отрисовать каждый кадр. Как многим известно есть такая штука
Objective-C |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayHandler:)];
[self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.displayLink setFrameInterval:1];
#pragma mark - CADisplayHandler
-(void)displayHandler:(CADisplayLink *)displayLink
{
[self setNeedsDisplay];
}
-(void)drawRect:(CGRect)rect
{
[self startAnimationScene];
} |
|
ну а в методе [self startAnimationScene] - я рисую собственно эти картинки снежинок
Objective-C |
1
| CGContextDrawTiledImage(context, drawRectSpriteForeground, spriteForeground.spriteImage.CGImage); |
|
со сменой позиции, и все ок все работает. Но при старте приложения выполняется целая туча запросов, обновление данных, шедулятся события и так далее. Вроде все выполняется в фоновом потоке через диспатч но все равно заметно как анимация подтормаживает при выполнение этих операций. Так вот вопрос, возможно ли как то поднять приоритет этой отрисовки? или только один вариант заморачиваться на оптимизации запросов что бы они не так вешали приложение при старте