1

MAC アプリケーションの NSImageView にシャドウを追加しようとしています。

カスタム NSImageView クラス「ShadowView.h」を作成し、drawRect: を次のように変更しました。

- (void)drawRect:(NSRect)dirtyRect {
    [super drawRect:dirtyRect];

    NSShadow *shadow = [[NSShadow alloc] init];
    [shadow setShadowBlurRadius:5];
    [shadow setShadowOffset:NSMakeSize(30.0, 3.0)];
    [shadow setShadowColor:[NSColor redColor]];
    [shadow set];

    [self setWantsLayer:YES];
    [self setShadow:shadow];
}

しかし、何も起こりません。また、デバッグすると、上記のコードが呼び出されていることがわかります。5年前からこの質問を見ましたが、もう機能していないようです

NSImageView に影を追加する

ありがとうございました!

4

2 に答える 2

1

ビューに影を追加する場合、そのビューのスーパービューでレイヤーバッキングを有効にする必要があります。そうでない場合、このサンプル アプリに見られるように、ビューの影はそれ自体の境界で切り取られます。

切り取られた影

影が完全に表示されるようにするには、ビューのスーパービューを呼び出す-setWantsLayer:YES(または Interface Builder の [コア アニメーション レイヤー] チェックボックスをオンにする) ことを確認してください。

完全な影

于 2016-08-14T13:36:38.097 に答える
0

これらを initWithFrame のように別の場所に設定する必要があります。

[self setWantsLayer:YES];
[self setShadow:shadow];
于 2016-08-14T03:19:26.900 に答える