为NSView创建投影 - Cocoa

时间:2011-07-22 13:57:33

标签: cocoa nsview nswindow shadow dropshadow

我正在尝试围绕NSView创建一个投影,就像NSWindow如何使用它的影子一样,但我遇到了一些困难。我为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 个答案:

答案 0 :(得分:2)

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

我在使用图层支持的视图时修复了它。我只是将superview的wantsLayer属性设置为YES ..即 [[view superView] setWantsLayer:YES] 并为视图设置阴影 [view setShadow:dropShadow]