0

NSView に CALayer を追加しようとしています。私が持っている動作していないコードは

-(void) InsertCALayer
{
    newLayer = [CALayer layer];
    newLayer.frame = NSMakeRect(10, 10, 100, 100);
    newLayer.backgroundColor = CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1.0);
    [rootLayer addSublayer:newLayer];
}

ただし、このコードでは何も表示されません。奇妙なことに、mouseDown イベント ハンドラーも実装しており、コードはそこで動作します。

-(void) mouseDown:(NSEvent *)theEvent
{   
    newLayer = [CALayer layer];
    newLayer.frame = NSMakeRect(10, 10, 100, 100);
    newLayer.backgroundColor = CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1.0);
    [rootLayer addSublayer:newLayer];
}

両方のメソッドが確実に呼び出されることは確認できますが、なぜ一方が機能し、もう一方が機能しないのかについて非常に混乱しています。何かご意見は?

4

1 に答える 1

0

それは

-(void) InsertCALayer

ビュー階層がロードされた後にメソッドが呼び出されていますか? デバッガーで InsertCaLayer メソッドと 'po' rootLayer にブレークポイントを設定した場合、有効なオブジェクトがありますか?

ビュー階層に変更を加える前に、ビュー階層を完全にロードする必要があります。ここが問題なのかな。お知らせ下さい!

于 2012-08-21T19:52:34.827 に答える