如何在CALayer对象的外部添加阴影?

时间:2016-02-05 03:35:14

标签: ios objective-c calayer

我不确定这是否是一个重复的问题,但请随意标记是否存在。

我试图在CALayer的外部添加阴影。我目前在CALayer中有一个UIImageView,我已经用如图所示的圆角制作:

CALayer * l = [ImageView layer];
[l setMasksToBounds:YES];
[l setCornerRadius:10.0];

我已尝试添加其他代码:

[l setShadowOffset:CGSizeMake(0, 3)];
[l setShadowOpacity:0.4];
[l setShadowRadius:3.0f];
[l setShouldRasterize:YES];

结果以红色显示,其中阴影在CALayer中而不是在CALayer之外,这是我希望以绿色沿着边缘实现的:

enter image description here

如何在保持圆角的同时实现这一目标?感谢

1 个答案:

答案 0 :(得分:1)

您可以使用UIBazierPath来实现此目标:

UIBezierPath *shadow = [UIBezierPath bezierPathWithRect:imageview.bounds];
imageview.layer.masksToBounds = NO;
imageview.layer.shadowColor = [UIColor redColor].CGColor;
imageview.layer.shadowOffset = CGSizeMake(0.0f, 5.0f);
imageview.layer.shadowOpacity = 0.5f;
imageview.layer.shadowPath = shadowPath.CGPath;

这里masksToBounds = NO层的子层可以扩展阴影效果的边界。