如何仅在uiview的底部和右侧添加阴影?

时间:2012-04-15 23:02:17

标签: objective-c ios cocoa-touch uiview dropshadow

我正在考虑在UIView的底部和右侧添加投影,但我发现所有解决方案都为视图的四边添加了阴影。有办法解决这个问题吗?

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

答案 2 :(得分: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;