0

我正在尝试在NSImageView. 我正在访问CALayer视图并在那里设置其阴影属性:

[self.originalImageView setWantsLayer:YES];
CALayer *imageLayer = self.originalImageView.layer;
[imageLayer setShadowRadius:5.f];
[imageLayer setShadowOffset:CGSizeZero];
[imageLayer setShadowOpacity:0.5f];
[imageLayer setShadowColor:CGColorCreateGenericGray(0, 1)];
imageLayer.masksToBounds = NO;

但即使我已将掩码设置为否,我还是得到了这个:

在此处输入图像描述

仔细看影子。它在水平方向上完美显示,但在垂直方向上被剪裁了。图像是宽高比的,图像和图像视图都可以是任意大小。如果我尝试用它NSShadow而不是图层的阴影,我会得到完全相同的结果。我可以myView.clipsToBounds = NO在 iOS 中使用,它曾经解决过这个问题,但是我在 Mac 上找不到该属性。

如何在NSImageView不裁剪的情况下在任意大小下绘制阴影?

4

1 回答 1

0

使用最新的 Xcode,我发现我可以将 CI 过滤器应用于视图(我不知道该功能之前是否也可用。)然后我在容器视图层的图像视图上应用了阴影. 它完美地工作。底线:如果我在图像视图自己的图层上应用过滤器,也会发生同样的事情,但如果我将它应用到容器视图的图层上,它就可以了!

于 2014-01-10T01:34:01.257 回答