UIView阴影不起作用

26

这是我的代码。

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个回答

40

24

阴影是绘制在图层边界之外的。你需要设置 listView.layer.masksToBounds = NO 才能看到阴影。

如果你设置了 listView.layer.masksToBounds = YES,那么你不能绘制超出边界的任何内容,因此无法获得阴影效果。


这非常有帮助。谢谢。 - Vaibhav Saran

3

只有下面的方法对我有效

[self.view bringSubviewToFront:subView];

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接