2012-02-19 21 views
-2

NSViewのバックグラウンドにNSShadowを描画しようとしています。 Mac OS X Tigerをサポートする必要があるので、NSGradientの代わりに使用したいと思っています。どうすればいいですか?私はこれがかなり簡単でなければならないことを知っています。私は間違いをしているに違いありません。NSView内にNSShadowを描画します

ありがとうございます!

+2

は、あなたの質問をしてください展開します。あなたは何を "キャスト"したいですか? –

答えて

6

最も簡単な方法は、ビューのレイヤーのシャドウプロパティを設定することです。あなたは* viewという名前のNSViewを持っている場合、それはのようなものだろう:0よりも大きな何かに影の不透明度を設定

[[view layer] setShadowOpacity:0.5]; 

影が見えるようになります。描画される影は、ビューのアルファチャンネルに似ているので、ビューに描画するものはすべて影になります。ぼかし半径など、いくつかのシャドウアトリビュートを設定できます。詳しくは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を使用する必要があります:( –

+0

わからないのは残念です –

+0

メソッド名はsetShadowBlurRadiusです。またsetShadowOffsetはNSSizeを2倍しません。 –

関連する問題