2011-03-25 72 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