2011-08-18 79 views
0

我正在使用pdf閱讀器應用程序。我正在使用CALayer渲染PDF內容。我使用滑動手勢瀏覽頁面。問題是,如果用戶嘗試在圖層渲染開始後轉到下一頁或上一頁,在完成將當前pdf頁渲染到圖層後執行「正在下一頁」操作。我想要停止當前頁的渲染立即刷卡發生和下一頁應該開始在layer.any想法請幫助。停止更新iPhone中的CALayer內容

更新: 這裏是我的代碼

-(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:方法的執行似乎是running.am我糾正這個線程的方法?drawLayer:代碼被執行的線程,我用它來調用setNeedsDisplay方法?

回答

0

我認爲最好的解決方案是在單獨的線程中進行渲染。完成後,只需在屏幕上顯示渲染圖像即可。如果沒有,您可以隨時取消操作。

+0

我試圖與線程如你所說的方式,但它顯示像「丟失或無效圖像'寬度」值」如果在渲染和崩潰刷卡到其他頁面GDB一些錯誤。 – Hariprasad

+0

這並不意味着這種方法將無法正常工作:)您可以嘗試再次實施它。如果您提供了一些代碼,我們可能會找到該錯誤。 – Anton