Нарисуйте градиент вдоль изогнутой UIBezierPath
В приложении я рисую изогнутый UIBezierPath и класс MKOverlayPathView для отображения маршрутов полета. Это код, который я использую:
- (UIBezierPath *)pathForOverlayForMapRect:(MKMapRect)mapRect {
... bla bla bla ...
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:s];
[path addQuadCurveToPoint:e controlPoint:cp1];
[path addLineToPoint:e2];
[path addQuadCurveToPoint:s2 controlPoint:cp2];
[path closePath];
return path;
}
- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context{
self.mapRect = mapRect;
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
CGContextSetLineWidth(context, mapRect.size.height/700);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextAddPath(context, [self pathForOverlayForMapRect:mapRect].CGPath);
[self updateTouchablePathForMapRect:mapRect];
CGContextDrawPath(context, kCGPathFillStroke);
}
Это работает очень хорошо, но я хотел бы нарисовать градиент вдоль этого пути, а не просто цвет заливки. И вот тут-то все становится очень сложно.
Я экспериментировал с CGContextDrawLinearGradient (), но он еще нигде не пригодился.