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

4 回答 4

40

阴影实际上是在 UIView 下方绘制的。如果您将 maskToBounds 设置为 YES,这将剪辑 UIView 框架之外的任何绘图。 这是一个更详细地描述了这一点的 SO 链接。

于 2012-04-30T13:17:46.397 回答
24

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

如果你设置listView.layer.masksToBounds = YES了,你就不能在边界之外画任何东西,所以你不能得到阴影

于 2012-04-30T13:17:43.437 回答
2

只有以下对我有用

[self.view bringSubviewToFront:subView];
于 2020-05-04T08:12:48.333 回答
1

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

于 2012-07-30T19:16:20.517 回答