2012-04-15 80 views

回答

1

我可以通过在视图的底部和右侧添加两个具有拉伸阴影图像的UIImageView来实现。您不必使用这些UIImageView覆盖所有视图,只需根据需要剪切即可。看看iPhone上的颜色混合图层,我相信这些美丽的阴影是通过使用UIImageView创建的。这节省了系统资源。当然,您可以使用CALayer创建阴影,但我认为它会消耗更多系统资源来渲染阴影,因此CALayer是我的第二选择。

19

您可以使用CAGradientLayer像这样,

CAGradientLayer *shadow = [CAGradientLayer layer]; 
shadow.frame = CGRectMake(-10, 0, 10, myView.frame.size.height); 
shadow.startPoint = CGPointMake(1.0, 0.5); 
shadow.endPoint = CGPointMake(0, 0.5); 
shadow.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite:0.0 alpha:0.4f] CGColor], (id)[[UIColor clearColor] CGColor], nil]; 
[myView.layer addSublayer:shadow]; 

你必须改变frame,以满足您的需求。此示例沿着左侧视图的高度显示阴影。您还可以更改开始点和结束点以控制阴影的方向。

+1

有没有办法使用CALayer的shadowOffset和shadowRadius来实现目标? – tom 2012-04-16 01:04:42

+0

我想你可以通过改变框架来做到这一点。 – edc1591 2012-04-16 01:34:31

0
UIBezierPath *shadowPath = [UIBezierPath 
bezierPathWithRect:self.yourViewObj.bounds]; 
self.yourViewObj.layer.masksToBounds = NO; 
self.yourViewObj.layer.shadowColor = [UIColor blackColor].CGColor;//*** color you want for shadow 
self.yourViewObj.layer.shadowOffset = CGSizeMake(5.0f, 5.0f); 
self.yourViewObj.layer.shadowOpacity = 0.7f; 
self.yourViewObj.layer.shadowPath = shadowPath.CGPath; 
相关问题