没有渐变的UIView阴影?

时间:2013-07-09 03:18:40

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

Shadow effect

有没有人知道如何在没有渐变的情况下实现阴影效果?就像下面的截图显示

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

1 个答案:

答案 0 :(得分:4)

对于第一个问题,您可以更改阴影的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!如果不这样做,渲染阴影的性能会下降很多。

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