如何使用带有渐变的UIBezierPath绘制多点线



我需要画很多线。

我正在使用UIBezierPath绘制线条,并使用小的5x10图案图像进行渐变。下面是代码的一部分:

 l1 = [UIBezierPath bezierPath];
    [l1 moveToPoint:CGPointMake(76, 373)];  
    [l1 addLineToPoint:CGPointMake(940, 373)];   

    CAShapeLayer *pathLayer = [CAShapeLayer layer];
    CGRect pathRect = self.view.frame;
    path = l1;
    pathLayer.frame = self.view.bounds;
    pathLayer.bounds = pathRect;
    pathLayer.geometryFlipped = NO;
    pathLayer.path = path.CGPath;
    pathLayer.strokeColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"line1Pattern.png"]];
    pathLayer.fillColor = nil;
    pathLayer.lineWidth = 8.0f;
    pathLayer.opacity = 1;
    [pathLayer setShadowOffset:CGSizeMake(0, 5)];
    [pathLayer setShadowOpacity:0.5];
    pathLayer.lineCap = kCALineCapRound;
    pathLayer.lineJoin = kCALineJoinRound;
    [pathArray addObject:pathLayer];
    self.pathLayer = pathLayer;

如果线是直线水平(如蓝色和红色) - 一切都很好,结果很棒。但是如果我画倾斜线,或者画直线然后平铺 - 结果是不行的。这是图像的链接:左侧 - 我需要什么,右侧 - 什么亩结果:示例

所以,据我了解 - 我需要旋转渐变以匹配线条。但我无法想象如何实现这一点。

此外,有些线条可能具有锯齿形,如下图所示:示例

谁能帮我解决这个问题?或者建议另一种画线的方法。谢谢!

您只能绘制水平线并使用变换旋转它们。但是如果你需要一条曲线,那么一切都会复杂得多。

您还可以创建渐变并绘制它而不是平铺图像。

最新更新