2011-01-16 9 views
5

私はNSImageViewを持っていて、影を付けたいと思っています。私はプログラムでそれをやってみました:NSImageViewに影を追加する

NSShadow *shadow = [[[NSShadow alloc] init] autorelease]; 
[shadow setShadowBlurRadius:4.0f]; 
[shadow setShadowOffset:CGSizeMake(4.0f, 4.0f)]; 
[shadow setShadowColor:[NSColor blackColor]]; 

[view setShadow:shadow]; 

しかし、それは表示されません。何か案は?ありがとう。

+0

空のNSImage(描画するのと同じサイズ)を作成し、その上に 'lockFocus'を設定し、影を設定し、元のものを新しいもの(' unlockFocus')に描画することができます。私は画像を着色するためにそのテクニックを使用します。それが影のために働くことを保証することはできません。 – Richard

答えて

9

影のパラメータを設定する必要があります。デフォルトでは、すべて0であるため、ビューには目に見える影響はありません。

-setShadowColor:,-setShadowRadius:および-setShadowOffset:NSShadowと表示しています。

+0

上記の内容をすべて追加してみましたが効果がありません。私は上記のサンプルを更新しました。 –

+2

あなたのビューは 'CALayer'によってバックアップされていますか?そうでない場合は、シャドーを設定する前に 'setWantsLayer:'(値が 'YES'である)をビューに送ってCore Animationバッキングを有効にする必要があります。 –

+0

@ジョナサン:それは私が実際に答えとして投稿しようとしていたものでした。 'setShadow:'は単に影のプロパティをCore Animationレイヤーにコピーするので、ビューは 'CALayer'によってサポートされなければなりません。これは、Interface Builderを使用してビューに影を適用する場合にも顕著です。 – Joost

関連する問題