UIView 中的阴影没有渐变?

Posted

技术标签:

【中文标题】UIView 中的阴影没有渐变?【英文标题】:Shadow in UIView without gradient ? 【发布时间】:2013-07-09 03:18:40 【问题描述】:

有没有人知道如何实现没有渐变的阴影效果?如下图所示

另一个问题是子视图的顺序,即视图在前面可能会隐藏视图在后面的效果。如何克服?

【问题讨论】:

【参考方案1】:

第一个问题可以改变阴影的shadowRadius,例如:

//You must include QuartzCore framework (#import <QuartzCore/QuartzCore.h>)
view.layer.cornerRadius = 5;
view.layer.shadowRadius = 0; //The shadow should be rendered as a solid shape
view.layer.shadowOffset = CGSizeMake(0, 2);
view.layer.shadowOpacity = 0.5;
view.layer.shadowColor = [UIColor blackColor].CGColor;

UIBezierPath *path = [UIBezierPath bezierPathWithRect:view.bounds];
view.layer.shadowPath = path.CGPath; //This is very important!

请记住始终设置 shadowPath!如果不这样做,渲染阴影的性能会下降很多。

对于第二个问题,抱歉,但我认为没有办法让对象的阴影出现在原始视图之上的另一个视图上。

【讨论】:

它就像一个魅力。谢谢。解决了第一个问题。顺便问一下,为什么 shadowPath 如此重要? 老实说我不太确定,我认为这很重要,因为如果你不设置它,每次在该视图中调用 drawRect (例如动画时),阴影路径需要重新计算,但如果你设置它,它会一直使用那个。

以上是关于UIView 中的阴影没有渐变?的主要内容,如果未能解决你的问题,请参考以下文章

UIView中的圆柱形外观渐变

沿 UIView 左边缘显示渐变

如何在android中使用渐变阴影按钮制作渐变恒定发光?

markdown 纯CSS中的渐变阴影

使用 CALayer 的 UIView 没有出现阴影

Swift - UI 按钮阴影渐变