PDFコンテンツを含むCALayerを表示するカスタムビューがあります。そのために、 CALayer Delegateの使用に対する最初の回答に示されているように、デリゲートNSObjectサブクラスを実装しました。
私はドキュメントベースのアプリを持っているので、ドキュメントを開くことができる開始ウィンドウがあります。カスタムドキュメントからIinitWithWindowNibName:makeWindowControllersメソッドのカスタムwindowController。windowControllerから、windowDidLoadで、カスタムNSViewの変数値を設定し、CALayerを初期化します。同じ場所で、次のコード行を実行してコンテンツを描画します。
[[[PDFViewLayerDelegate alloc] initWithUrl:url andPageIndex:currentPageIndex] drawLayer:layer1 inContext:[[NSGraphicsContext currentContext] graphicsPort]];
何が起こるか:その行を実行する前に、CALayerの背景は緑に設定され、正しいウィンドウにのみ表示されていましたが、PDFコンテンツは、両方のレイヤーが白で塗りつぶされている間のみ最初のウィンドウに描画されます(これも行われます)。デリゲートメソッドで)。
私の質問は次のとおりです。
- CALayerが、それを作成するカスタムNSViewサブクラスではないビューに描画されるのはなぜですか?さらに別のウィンドウで?
- 各ウィンドウの両方のビューが同じgraphicsContextを共有していますか?これが原因である可能性があります。