-1

I'm trying to draw a NSShadow on the background of a NSView. I want to use it as a replacement for NSGradient, as I need to support Mac OS X Tiger. How may I do that? I know this must be pretty easy and I must be making some mistake.

Thanks!

4

1 回答 1

7

最简单的方法可能是只为视图层设置阴影属性。如果你有一个 NSView* 命名view,它会是这样的:

[[view layer] setShadowOpacity:0.5];

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

如果你必须使用 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...
}
于 2012-02-19T04:40:48.987 回答