ImageView没有显示阴影

时间:2013-04-12 12:19:38

标签: iphone objective-c uiimageview shadow

我想以下面的方式将阴影放在UIImageview上:

imageView.layer.shadowColor = [UIColor purpleColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
imageView.clipsToBounds = NO;

但是当UIImageview无图像或背景颜色没有显示清晰的彩色阴影时。 我甚至试图把透明图像,但它仍然没有显示。请帮忙。

2 个答案:

答案 0 :(得分:3)

如果图像视图中没有任何内容,则没有任何内容可以构成阴影。在这种情况下你可以做的是定义一个显式的阴影矩形,而不是使用图像内容:

CGPathRef shadowPath = CGPathCreateWithRect(imageView.bounds, NULL);
imageView.layer.shadowPath = shadowPath;
CGPathRelease(shadowPath);

事实上,当涉及到添加阴影时,这种技术可以提供显着的性能提升,因为阴影不需要从图层内容动态计算。作为示例,您可以使用此技术来提高滚动性能。 Apple在其WWDC视频中提到了这一点。

答案 1 :(得分:0)

如果您想要一张没有图片的阴影,那么请转到Mike Weller's的{​​{1}}解决方案,我会说实话我更喜欢那个答案,但我可以尝试设置{ {1}} explicit shadow rect添加maskToBOunds,如:

NO

预先警告如果在很多方面使用它会影响性能,但是如果在一两件事上使用,我只会注意到一个较小的性能点击。

但就像我说我喜欢shadowPath解决方案一样,我非常喜欢它,我可能会改变代码本身。我只提供另一种选择。