我有一个奇怪的问题。尽管我确实阅读了很多关于如何做到这一点的教程,但最终的结果只显示贝塞尔线,而不是任何阴影。我的代码非常简单:
let borderLine = UIBezierPath()
borderLine.moveToPoint(CGPoint(x:0, y: y! - 1))
borderLine.addLineToPoint(CGPoint(x: x!, y: y! - 1))
borderLine.lineWidth = 2
UIColor.blackColor().setStroke()
borderLine.stroke()
let shadowLayer = CAShapeLayer()
shadowLayer.shadowOpacity = 1
shadowLayer.shadowOffset = CGSize(width: 0,height: 1)
shadowLayer.shadowColor = UIColor.redColor().CGColor
shadowLayer.shadowRadius = 1
shadowLayer.masksToBounds = false
shadowLayer.shadowPath = borderLine.CGPath
self.layer.addSublayer(shadowLayer)
字符串
我做错了什么,因为我似乎没有看到任何错误,但当然我错了,因为没有阴影出现。函数是drawRect,基本的UIView没有额外的东西在那里,x和y是框架的宽度和高度。
非常感谢提前!
4条答案
按热度按时间vm0i2vca1#
我直接从我的PaintCode应用程序中引用这个例子。希望这对你有帮助。
字符串
hvvq6cgz2#
我更喜欢增加shadow-sublayer的方式,你可以很容易地使用以下函数(Swift 3.0):
字符串
最后,您只需将其添加到您的线路径(CAShapeLayer):
型
cczfrluj3#
我使用shape图层的shadow属性来添加阴影。这种方法的最大优点是我不需要显式地提供路径。阴影跟随图层的路径。我还通过改变路径来动画图层。在这种情况下,阴影也可以无缝地动画,而不需要一行代码。
这是我正在做的事情(Swift 4.2)
字符串
curveShapePath方法是返回路径的方法,定义如下:
型
的数据
k75qkfdt4#
使用CGGraphicsContext绘制自定义图形时,您仍然可以手动应用阴影:
字符串