Objective C 为父视图设置阴影

Posted

技术标签:

【中文标题】Objective C 为父视图设置阴影【英文标题】:Objectivec set shadow to parent view 【发布时间】:2015-07-09 08:27:56 【问题描述】:

我想给父视图设置阴影。但我希望子视图保持不变。

我现在要做的是

parentView.layer.shadowRadius = 0.8;
parentView.layer.shadowOpacity = 0.3;
parentView.layer.shadowOffset = CGSizeMake(1.0, 1.4);

但是,如果我这样做,子视图也会改变。有没有办法设置阴影但保持子视图相同。

谢谢

【问题讨论】:

您尝试将layer.masksToBounds = YES; 用于子视图。 @bluesky AFAIK 这不会做任何事情。 【参考方案1】:

您的 parentView 是否透明?我已经建立了一个简单的项目并使用了你的代码。我更改了一些值以更好地看到阴影。看起来是这样的:

如您所见 - 子视图上没有阴影。 parentView 的背景颜色设置为白色。当我将它设置为清除颜色时,就会发生这种情况。我加了边框证明parentView还在:

Apple Docs 证明这一点:

图 A-7 显示了同一示例层的几个不同版本 应用了红色阴影。左边和中间的版本包括一个 背景颜色,所以阴影只出现在边框的周围 层。但是,右边的版本不包括背景 颜色。在这种情况下,阴影将应用于图层的内容, 边框和子图层。

【讨论】:

以上是关于Objective C 为父视图设置阴影的主要内容,如果未能解决你的问题,请参考以下文章

将按钮禁用为灰色-Objective C

如何在 Objective C 中以编程方式设置集合视图?

NSLayoutConstraint - 无法将子视图框架设置为父视图边界

Objective C - 从视图控制器设置 UIView 子类的标签属性

可以将静态类设置为 UItextfield (Objective C) 的委托吗?

是否可以使用约束将视图高度指定为父视图的百分比,但也可以限制最大结果高度?