2011-01-04 8 views
3

これを行う正しい方法は何ですか?ここに私がしようとしているものがあります。しかし、ディスプレイはdotLayerには決して呼び出されません。NSViewのレイヤーをプログラムで設定するには

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    DotLayer *dotLayer = [[DotLayer alloc]init ]; 
    dotLayer.frame= CGRectMake(10, 10, 100, 100); 
    dotLayer.nDots = 4; 
    NSView *contentView = window.contentView; 
    CALayer *layer = [[CALayer alloc]init]; 
    layer.frame = CGRectMake(0,0,200,200); 
    contentView.layer = layer; 
    [layer addSublayer:dotLayer]; 
    [dotLayer setNeedsDisplay]; 
} 

DotLayerはCALayerサブクラスです。

答えて

8

あなたはおそらくsetLantsLayerを忘れましたか?

contentView.wantsLayer = true 
+1

だスウィフトで

[contentView setLayer:.. whatever your root layer is]; [contentView setWantsLayer:YES]; 

(これらの2つのラインの順序は重要であるにも忘れないでください... DOCOを参照してください。)

は、これは私のために問題を修正しました。特に、Swiftでは、それは 'contentView.wantsLayer = true'です – kbpontius

+0

優れた点 – Fattie

関連する問題