Остановка обновления содержимого CALayer в iPhone - PullRequest
0 голосов
/ 18 августа 2011

Я работаю над приложением для чтения PDF. Я использую CALayer для рендеринга содержимого PDF. Я использовал жест смахивания для перемещения по страницам. Проблема в том, что пользователь пытается перейти на следующую или предыдущую страницу один раз.рендеринг слоя начался, действие «переход на следующую страницу» выполняется после завершения рендеринга текущей pdf-страницы на слое. Я хочу, чтобы рендеринг текущей страницы был немедленно остановлен, как только произойдет свайпи следующая страница должна начать рендеринг на layer.any идею, пожалуйста, помогите.

ОБНОВЛЕНИЕ: вот мой код

-(void)loadSinglePageWithWidth:(float)width andHeight:(float)height{
    draw=0;
    NSLog(@"before draw");
    [markupView.layer insertSublayer:renderingLayer1 above:tiledLayer1];
    loadingThread=[[NSThread alloc] initWithTarget:self selector:@selector(loadSinglePage) object:nil];
    [loadingThread start];
}
-(void)loadSinglePage{
    [renderingLayer1 setNeedsDisplay];
}

как только я проведу, в моем методе действия код будет написан как

[loadingThread cancel];
[loadingThread release];
loadingThread=nil;

даже если я отменяю «loadingThread», выполнение drawLayer: метод, кажется, выполняется. Я корректен с этим подходом потока? Будет ли drawLayer: код будет выполняться потоком, который я использую для вызова метода setNeedsDisplay?

1 Ответ

0 голосов
/ 18 августа 2011

Я думаю, что лучшее решение - сделать рендеринг в отдельном потоке.Как только это будет сделано, вы просто отобразите изображение на экране.Если нет, вы всегда можете отменить операцию.

...