2012-02-19 40 views
-2

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

谢谢!

+2

展开你的问题,谢谢。你想“投下”这个影子? – 2012-02-19 04:28:55

回答

6

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

[[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... 
} 
+0

Tiger上没有核心动画,这就是为什么我必须使用NSShadow :( – 2012-02-19 04:48:50

+0

对不起,没有明确说明 – 2012-02-19 06:22:00

+0

需要一些更正,因为它不能编译,方法名称是setShadowBlurRadius,同时setShadowOffset取NSSize不是双精度。 – 2012-11-12 04:39:41