2011-03-25 71 views
0

对于CALayer上的阴影属性,只有矩形和特定于图层的只有?也就是说,在石英上,我可以在某个任意路径上进行填充路径时设置阴影。我可以用CALayer的阴影属性来做到这一点吗?我不这么认为,但我想要确认。iOS:CALayer阴影只有矩形?

回答

1

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

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

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