Так что вы не можете сделать это напрямую, потому что тень отражает путь, поэтому, если вы сделаете путь прозрачным, тень также будет прозрачной.Есть несколько обходных путей, о которых я могу подумать (зависит именно от того, что вы делаете), но одним хитрым способом было бы просто нарисовать тень достаточно далеко под траекторией, чтобы вы могли просто нарисовать ее, в основном стерев ее.Например, если фон белый, это выполнит то, что вы хотите:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
CGContextSetLineWidth(context, 10.0);
CGContextMoveToPoint(context, 10.0, 30.0);
CGContextAddLineToPoint(context, 310.0, 30.0);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat components[4] = {0.0, 0.0, 0.0, 1.0};
CGColorRef shadowColor = CGColorCreate(colorSpace, components);
CGContextSetShadowWithColor(context, CGSizeMake(0.0f,20.0f), 4.0, shadowColor);
CGContextStrokePath(context);
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextSetLineWidth(context, 10.0);
CGContextMoveToPoint(context, 10.0, 30.0);
CGContextAddLineToPoint(context, 310.0, 30.0);
CGContextStrokePath(context);
}
надеюсь, это поможет.