2012-02-19 71 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