iOS:CALayer阴影只有矩形吗?

时间:2011-03-25 12:08:44

标签: ios calayer

对于CALayer上的阴影属性,是否只是矩形而且仅限于图层?也就是说,使用石英,我可以在某个任意路径上进行填充路径时设置阴影。我可以用CALayer的阴影属性做到吗?我不这么认为,但我想要确认。

2 个答案:

答案 0 :(得分:3)

是的,您可以使用CALayer上的 shadowPath 属性设置自定义阴影。这是一个例子:

[shadowDepth.layer setMasksToBounds:NO ];
[shadowDepth.layer setShadowColor:[[UIColor blackColor ] CGColor ] ];
[shadowDepth.layer setShadowOpacity:0.5 ];
[shadowDepth.layer setShadowRadius:6.0 ];
[shadowDepth.layer setShadowOffset:CGSizeMake( 0 , 0 ) ];
[shadowDepth.layer setShouldRasterize:YES ];
UIBezierPath * depthShadowPath = [UIBezierPath bezierPath ];
[depthShadowPath moveToPoint:CGPointMake( 40 , 140 ) ];
[depthShadowPath addLineToPoint:CGPointMake( shadowDepth.frame.size.width - 40 , 140 ) ];
[depthShadowPath addLineToPoint:CGPointMake( shadowDepth.frame.size.width + 20 , shadowDepth.frame.size.height + 40 ) ];
[depthShadowPath addLineToPoint:CGPointMake( -10 , shadowDepth.frame.size.height + 40 ) ];
[depthShadowPath addLineToPoint:CGPointMake( 40 , 140 ) ];
[shadowDepth.layer setShadowPath:[depthShadowPath CGPath ] ];

我在此发表了一篇文章以及一些优化应用程序性能的技巧。请在此处查看:CALayer Shadows

答案 1 :(得分:1)

如果你的目标是iOS 3.2或更高版本,那么你可以使用你想要的任何路径,但人们经常会错过它,因为它在iOS中而不在OS X中。查看shadowPath属性,它可以让你设置每个单独层的特定路径。

此外,如果您要使用阴影,如果可能的话,启用shouldRasterize绝对是个好主意;它会产生巨大的性能差异。

相关问题