2013-10-28 192 views
0

我试图在NSImageView下绘制阴影。我访问视图的CALayer有设置其阴影属性:围绕NSImageView绘制阴影

[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; 

但即使我已经设定口罩界限为NO,我得到这样的:

enter image description here

仔细看影子。它完全水平显示,但垂直显示,它被剪切。该图像是方面拟合的,并且图像和图像视图可以是任意大小。如果我用NSShadow而不是图层的阴影来尝试,我会得到完全相同的结果。我可以在iOS中使用myView.clipsToBounds = NO,它用于解决此问题,但是我无法在Mac上找到该属性。

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

+1

我也没有答案。我唯一能告诉你的是,影子似乎被剪裁到视图中(你的显然比图像宽,但是高度相同)。可悲的是,masksToBounds = NO在这里没有帮助。 – uliwitness

+0

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

回答

0

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