2011-07-22 64 views
1

我正在尝试创建一个围绕NSView的阴影,就像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]; 
} 

这并没有真正创造一个我期待阴影。

这里是我试图瞄准的影子...

NSWindow Shadow

而创建通过的NSView这似乎是视图的边界内的边界线。任何人都有这个想法吗?

回答

1

我遇到过类似的阴影问题,因为NSView剪辑了它的边界。

我修复了它,当我使用层支持视图。我只是简单地将超级视图的wantsLayer属性设置为YES ..即[[view superView] setWantsLayer:YES]并设置查看影子[查看setShadow:dropShadow]