UIView阴影不起作用

时间:2012-04-30 13:05:48

标签: iphone objective-c ios ios5

这是我的代码。

listView.layer.masksToBounds = NO;
listView.layer.shadowOffset = CGSizeMake(-3, 3);
listView.layer.shadowColor=[[UIColor blackColor] CGColor];
listView.layer.shadowRadius = 4;
listView.layer.shadowOpacity = 1.0;
[listView.layer setShouldRasterize:YES];

阴影效果很好。

改变时

listView.layer.masksToBounds = YES;

我没有阴影效果。

4 个答案:

答案 0 :(得分:31)

阴影实际上是在UIView下方绘制的。如果将maskToBounds设置为YES,则会剪切UIView框架之外的任何图形。 Here is a SO link that describes this in more detail.

答案 1 :(得分:21)

阴影被绘制在图层边界之外。您必须设置listView.layer.masksToBounds = NO才能看到阴影

如果设置listView.layer.masksToBounds = YES,则无法在边界之外绘制任何内容,因此无法获得阴影

答案 2 :(得分:1)

如果您必须使用masksToBounds = YES;,请查看this SO post。它通过使用两个嵌套视图告诉您如何在视图上使用阴影和圆角(在此特定情况下):外部视图投射阴影并且不会屏蔽边界,而内部视图具有圆角和蒙版到边界。

答案 3 :(得分:0)

只有下面的内容对我有用

[self.view bringSubviewToFront:subView];