在NSView中绘制NSShadow

时间:2012-02-19 04:06:58

标签: objective-c macos cocoa nsview nsshadow

我正在尝试在NSView的背景上绘制NSShadow。我想用它作为NSGradient的替代品,因为我需要支持Mac OS X Tiger。我该怎么办?我知道这一定很容易,我一定是犯了一些错误。

谢谢!

1 个答案:

答案 0 :(得分:6)

最简单的方法可能是为视图的图层设置阴影属性。如果你有一个名为view的NSView *,那就像是:

[[view layer] setShadowOpacity:0.5];

将阴影不透明度设置为大于0的值将使阴影可见。绘制的阴影将类似于视图的alpha通道,因此无论您在视图中绘制的是什么,都会产生阴影。您可以设置其他几个阴影属性,例如模糊半径。请查看CALayer reference page了解更多信息。

如果你必须使用NSShadow,那么在绘图之前只需设置一个阴影:

- (void)drawRect:(NSRect)rect
{
    NSShadow *shadow = [[[NSShadow alloc] init] autorelease];
    [shadow setShadowBlurRadius:3.0];
    [shadow setShadowOffset:NSMakeSize(0.0, 5.0)];
    [shadow setShadowColor:[NSColor colorWithCalibratedWhite:0.0 alpha:0.6]];
    [shadow set];
    // continue with your drawing...
}