2011-07-22 7 views
1

NSWindowを影で描く方法のように、NSViewを囲むドロップシャドウを作成しようとしていますが、難しいです。NSViewのドロップシャドウを作成する - ココア

-(void)drawRect:(NSRect)dirtyRect { 
    NSRect rect = NSInsetRect([self bounds], 10.0, 10.0); 
    NSShadow *dropShadow = [[[NSShadow alloc] init] autorelease]; 
    [dropShadow setShadowColor:[NSColor blackColor]]; 
    [dropShadow setShadowBlurRadius:5]; 
    [dropShadow setShadowOffset:NSMakeSize(0,-3)]; 

    [NSGraphicsContext saveGraphicsState]; 

    [dropShadow set]; 

    NSRectFill(rect); 

    [NSGraphicsContext restoreGraphicsState]; 

    [super drawRect:dirtyRect]; 
} 

これは本当に私が探していたにドロップシャドウを作成しません:私は、私はドロップシャドウを作成していると私はオーバーライドするメソッドのために、このコードを使用していNSViewのためのクラスを作成しました。ここで

は私が

NSWindow Shadow

...を目指すしようとしている影ではなく、ビューの境界内のボーダーのように思えるのNSViewを通る線を作成しています。誰もがこれについての任意のアイデアを得た?

答えて

1

NSViewが境界をクリップするので、私は同様のシャドウの問題に直面しています。

レイヤーバックビューを使用したときに修正しました。スーパービューのwantsLayerプロパティをYESに設定するだけです。つまり、[[view superView] setWantsLayer:YES]と表示用の影を設定します。[view setShadow:dropShadow]

関連する問題