当背景颜色为透明色时,阴影不显示

时间:2012-10-17 05:25:17

标签: ios calayer

我在我的xib中创建了一个uiview,背景颜色为清晰的颜色。当我在视图图层上应用阴影时,阴影不会出现。但是当我设置除了清晰颜色之外的背景颜色时,阴影就会显示出来。请帮忙。

这是我的代码

self.cView.layer.shadowColor=[UIColor whiteColor].CGColor;
self.cView.layer.shadowOffset=CGSizeZero;
self.cView.layer.shadowRadius=30.0;
self.cView.layer.shadowOpacity=1.0;
self.cView.layer.cornerRadius=10.0;

4 个答案:

答案 0 :(得分:28)

问题是,阴影实际上考虑了“上层”。如果没有任何内容就没有阴影:How Shadows Work

编辑:

有这个食谱copied from paste bin

view.layer.shadowColor = [UIColor colorWithWhite:.5 alpha:1].CGColor;
view.layer.shadowRadius = 4.0f;
view.layer.shadowPath = CGPathCreateWithRect(CGRectMake(0, 0, 50, 50), NULL);
view.layer.shadowOpacity = 1.0f;
view.layer.shadowOffset = CGSizeMake(1, 1);

但是我怀疑这对你有什么用处:结果是一个“涂有”阴影颜色和周围阴影的视图。

答案 1 :(得分:2)

如果您指定shadowPath属性(例如shadowView.layer.shadowPath = UIBezierPath(roundedRect: shadowView.bounds, cornerRadius: 10).cgPath),即使使用.clear backgroundColor也可以使用。

答案 2 :(得分:1)

相当于@Rok Jark在Swift 4中的回答:

self.layer.shadowColor = UIColor(white: 0.5, alpha: 1).cgColor
self.layer.shadowRadius = 4.0
self.layer.shadowPath = CGPath.init(rect: CGRect.init(x: 0, y: 0, width: 50, height: 50), transform: nil)
self.layer.shadowOpacity = 1.0;
self.layer.shadowOffset = CGSize(width: 1, height: 1)

答案 3 :(得分:0)

您是否忘记将self.cView.clipToBounds设为NO