我正在使用CoreGraphics使用以下代码绘制带有圆形端点和投影的线条:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShadowWithColor(UIGraphicsGetCurrentContext(), CGSizeMake(0, 0), 4.0, [UIColor blackColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillEllipseInRect(context, CGRectMake(_startPoint.x - 5, _startPoint.y - 5, 10, 10));
CGContextFillEllipseInRect(context, CGRectMake(_endPoint.x - 5, _endPoint.y - 5, 10, 10));
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(context, 3.0);
CGContextMoveToPoint(context, _startPoint.x, _startPoint.y);
CGContextAddLineToPoint(context, _endPoint.x, _endPoint.y);
CGContextDrawPath(context, kCGPathStroke);
但是,这会产生如下结果:
阴影将单独应用于线条和圆圈。相反,我想要的是将阴影应用于由三者创建的“复合”形状(即仅使用复合alpha通道作为阴影的基础),如下所示:
任何想法我怎么可能实现这种效果? (请注意,我无法使用layer.shadow
的{{1}}属性,因为此行是为了响应触摸拖动事件而呈现的,并且该方法的性能不够好。)