CALayer将阴影投射到每个子图层,如何删除?

时间:2011-08-05 10:22:20

标签: iphone ios cocoa-touch ipad core-animation

我有一个带有表视图的UIView容器,其单元格包含图像和按钮。

我想为最外面的容器添加一个阴影但是当我这样做时,我发现阴影也被添加到所有图像和按钮中。如何在没有子图层的情况下只为图层本身添加阴影?

代码:

listContainer.layer.shadowColor = [UIColor blackColor].CGColor;
listContainer.layer.shadowOffset = CGSizeMake(3, 0);
listContainer.layer.shadowOpacity = .8;
listContainer.layer.borderColor = [UIColor blackColor].CGColor;

谢谢!

2 个答案:

答案 0 :(得分:5)

您是否尝试过图层的shadowPath属性?

listContainer.layer.shadowPath = [UIBezierPath bezierPathWithRect:listContainer.bounds.CGPath];

答案 1 :(得分:2)

我曾经遇到过这个问题,问题是图层背景颜色是透明的。

因此,如果您有UIView或CALayer,并且您尝试在其上设置阴影,请确保存在背景颜色以防止阴影应用于子图层。