【问题标题】:CALayer shadow with Spread & Size attributes?具有传播和大小属性的 CALayer 阴影?
【发布时间】:2011-11-30 00:27:32
【问题描述】:

我正在努力在 CALayer 周围创建阴影。对于我想要达到的效果,我需要访问阴影的“强度”。不知何故,就像 Photoshop 图层样式中的“扩展”滑块。我认为CALayer的“ShadowRadius”属性相当于Photoshop的“Size”滑块。

有什么建议吗?也许径向渐变是一种选择?

【问题讨论】:

  • 你应该尝试用你想要应用的效果的之前/之后的 Photoshop 屏幕截图来说明你的问题。

标签: ios core-animation core-graphics photoshop shadow


【解决方案1】:

设置图层的shadowOffset,shadowOpacity, 和shadowRadius,你应该有你想要的。试试这个直接在图层“下方”的阴影项目,模糊为 5 像素,使用正确的颜色,也可以使它看起来像发光:

CALayer *layer = myView.layer;
layer.shadowOpacity = 0.50;
layer.shadowRadius = 5.0;
layer.shadowOffset = (CGSize){.width=0.0,.height=0.0};

【讨论】:

  • 不幸的是,这并不能解决我的问题。我想控制阴影渐变的“斜率”。有点难以解释……锐度,也许……
  • 那么,Spread 是什么意思?是阴影偏移还是半径?
  • 实际上两者都不是。我的意思是黑色的强度(阴影颜色)。
【解决方案2】:

您可以通过在 CALayer 上设置自定义 shadowPath 属性来控制“传播”。

CGFloat radius = CGRectGetWidth(view.bounds)/2.0;
// this is a sample code for a circle, but you can use any shape you want
CGPathRef shadowPathRef = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 2.0 * radius, 2.0 * radius) cornerRadius:radius].CGPath;

layer.shadowPath = shadowPathRef;

如果您将半径设置为更大的值,阴影扩散会更大。

【讨论】:

    猜你喜欢
    • 2012-10-31
    • 2016-07-19
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2011-02-19
    • 2012-04-17
    • 1970-01-01
    • 2020-12-15
    相关资源
    最近更新 更多