UIView下阴影截断
Posted
技术标签:
【中文标题】UIView下阴影截断【英文标题】:Shadow cut off under UIView 【发布时间】: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);
...
如您所见,阴影在底部被切断,即视图框架结束的地方。我可以将阴影延伸到框架“外部”吗?
【问题讨论】:
【参考方案1】:使用CALayer
阴影属性而不是在drawRect:
中绘制阴影
shadowOpacity
shadowRadius
shadowOffset
shadowColor
shadowPath
这可能会导致一些性能问题,您可以使用 shadowPath
属性来减少这些问题。
【讨论】:
是的,我也知道这种方式,但我想如果我计算我的路径并在drawrect中绘制整个视图,我也可以在这里绘制阴影......最终,将我的贝塞尔曲线设置为@987654329 @ 解决了这个问题,所以我会接受你的回答(但如果你知道为什么drawRect
方法不起作用,请赐教:D)谢谢。
你可以使用drawRect,但是你必须扩展你的views frame,这样它才能渲染整个阴影。根据您的代码设计,这比仅使用 CALayer
阴影属性更复杂。 drawRect
或 CGContext
有点像纸页,你不能在页面之外画。以上是关于UIView下阴影截断的主要内容,如果未能解决你的问题,请参考以下文章