停止在iPhone中更新CALayer的内容

时间:2011-08-18 08:33:06

标签: iphone calayer pdf-rendering

我正在开发一个pdf Reader应用程序。我正在使用CALayer来渲染pdf内容。我使用滑动手势来浏览页面。问题是,如果用户试图转到下一页或上一页层的渲染已经开始,在完成将当前pdf页面渲染到图层上之后,正在执行“进入下一页”操作。我想在刷卡发生后立即停止呈现当前页面并且下一页应该开始在图层上渲染。任何想法请帮助。

更新 这是我的代码

-(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 :(得分:0)

我认为最好的解决方案是在单独的线程中进行渲染。完成后,您只需在屏幕上显示渲染图像。如果没有,您可以随时取消操作。