【问题标题】:Shadow cut off under UIViewUIView下阴影截断
【发布时间】:2013-07-22 12:16:34
【问题描述】:

我正在尝试在 UIView 下添加一些阴影。

drawRect 中,我创建了一个圆角矩形贝塞尔路径,并在其上附加了一个弯曲的箭头状底部(蓝色的东西)

这是影子的代码:

...
    CGContextSaveGState(context);
        CGContextAddPath(context, rectPath.CGPath);  // rectPath is the bezier
        CGContextSetShadowWithColor(context,shadowSize, 3.0, [[[UIColor blackColor]  colorWithAlphaComponent:0.7]CGColor]);    
        CGContextFillPath(context);
    CGContextRestoreGState(context);
...

如您所见,阴影在底部被切断,即视图框架结束的地方。我可以将阴影延伸到框架“外部”吗?

【问题讨论】:

    标签: ios uiview core-graphics shadow


    【解决方案1】:

    使用CALayer阴影属性而不是在drawRect:中绘制阴影

    • shadowOpacity
    • shadowRadius
    • shadowOffset
    • shadowColor
    • shadowPath

    这可能会导致一些性能问题,您可以使用 shadowPath 属性来减少这些问题。

    【讨论】:

    • 是的,我也知道这种方式,但我想如果我计算我的路径并在drawrect中绘制整个视图,我也可以在这里绘制阴影......最终,将我的贝塞尔曲线设置为@987654329 @ 解决了这个问题,所以我会接受你的回答(但如果你知道为什么 drawRect 方法不起作用,请赐教:D)谢谢。
    • 你可以使用drawRect,但是你必须扩展你的views frame,这样它才能渲染整个阴影。根据您的代码设计,这比仅使用 CALayer 阴影属性更复杂。 drawRectCGContext 有点像纸页,你不能在页面之外画。
    猜你喜欢
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多