0

私はPDFリーダーアプリケーションに取り組んでいます。CALayerを使用してPDFコンテンツをレンダリングしています。スワイプジェスチャを使用してページ間を移動しました。問題は、ユーザーが次または前のページに移動しようとすると、レイヤーが開始され、レイヤーへの現在のpdfページのレンダリングが完了した後、「次のページに移動」アクションが実行されています。スワイプが発生して次のページが表示されたらすぐに、現在のページのレンダリングを停止したいです。レイヤーでレンダリングを開始する必要があります。アイデアがあれば助けてください。

UPDate:これ が私のコードです

-(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メソッドの呼び出しに使用しているスレッドによって実行されますか?

4

1 に答える 1

0

最善の解決策は、別のスレッドでレンダリングを行うことだと思います。完了したら、レンダリングされた画像を画面に表示するだけです。そうでない場合は、いつでも操作をキャンセルできます。

于 2011-08-18T11:11:00.577 に答える