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

Posted

技术标签:

【中文标题】如何仅在uiview的底部和右侧添加阴影?【英文标题】:how to add shadow to only the bottom and right side of a uiview? 【发布时间】:2012-04-15 23:02:17 【问题描述】:

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

【问题讨论】:

【参考方案1】:

你可以像这样使用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 以满足您的需要。此示例沿左侧视图的高度显示阴影。您还可以更改起点和终点来控制阴影的方向。

【讨论】:

有没有办法使用CALayer的shadowOffset和shadowRadius来达到目的? 我想你可以通过改变框架来做到这一点。【参考方案2】:

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

【讨论】:

【参考方案3】:
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;

【讨论】:

以上是关于如何仅在uiview的底部和右侧添加阴影?的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中仅向UIVIEW的顶部和底部添加阴影

如何在表格视图单元格内的视图顶部和底部放置阴影?

如何在 ios Swift 的 UIView 中左右设置阴影?

如何摆脱右侧阴影但保持按钮上的底部阴影

仅在元素底部添加框阴影

无法在 iOS 中设置 UIView 的底部阴影?