如何使用Quartz 2D为UIImage或UIImageView添加投影效果?

6

我该如何使用Quartz 2D为UIImageUIImageView添加阴影效果?

有示例代码吗?

2个回答

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

在你的实现中不要忘记导入 #import <QuartzCore/QuartzCore.h>

编辑:

附 @Luke 的评论:

小贴士:确保您没有layer.masksToBounds设置为YES,否则阴影将不会出现。


阴影是纯黑色的吗?如何制作不透明的阴影?谢谢。 - user403015
您可以通过修改 shadowOpacity 属性来设置不透明度。 - fulvio
1
我已经尝试了所有的方法,但是出现了错误:“在类型为'UIImage'的对象上未找到属性'layer'”,我该怎么办? - Peter V
1
@ValKalinic 请确保将QuartzCore框架添加到您的XCode项目中。 - fulvio
2
这里有一个小技巧,可能会节省其他人的时间,请确保您没有将 masksToBounds 设置为 YES,否则阴影不会出现!layer.masksToBounds = YES; - Luke

1
+ (void)addShadowToView:(UIView*)view Color:(UIColor*)color ShadowOffset:(CGSize)offset Radius:(float)radius Opacity:(float)opacity
{
    view.layer.shadowColor = [color CGColor];
    view.layer.shadowOffset = offset;
    view.layer.shadowRadius = radius;
    view.layer.shadowOpacity = opacity;
}

使用:

[calssName addShadowToView:self.navigationController.navigationBar Color:[UIColor blackColor] ShadowOffset:CGSizeMake(1.0f, 0.5f) Radius:1.0 Opacity:0.5];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接