我可能没有以最好的方式解释这一点,所以请多多包涵。
我所拥有的是在 MKMapView 对象之上绘制的 CGPath:
我能够做到这一点的方法是为较深的蓝色线创建一个 CGPath,然后创建该路径的副本,然后用半透明的蓝色描边它的较粗版本。这是我目前为此使用的代码:
// set the shadow around the path line
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextSetRGBStrokeColor(context, 0.0f, 0.0f, 0.0f, 0.0f);
CGContextSetRGBFillColor(context, 0.0f, 0.0f, 1.0f, 0.4f);
CGPathRef shadowPath = CGPathCreateCopyByStrokingPath(self.path.CGPath, NULL, 80.0f, kCGLineCapRound, kCGLineJoinRound, 0.0f);
CGContextBeginPath(context);
CGContextAddPath(context, shadowPath);
CGContextDrawPath(context, kCGPathFillStroke);
CGContextRestoreGState(context);
CGPathRelease(shadowPath);
效果很好,目前没有任何问题。
但是,我想做的是获得那个较厚的半透明蓝色区域的轮廓的 CGPathRef。这是另一个屏幕截图,显示了我想要的伪路径(手绘为红色):
这怎么可能?