1

我正在使用UIBezierPath绘图,我想为我的路径选择不同的颜色,但是发生的事情是所有路径都设置为当前选择的颜色,所以我该如何解决这个问题,下面是我的代码

(void)drawRect:(CGRect)rect
{
    if(changecolor)
    {
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        strokeColor = appDelegate.color;

        SEL blackSel = NSSelectorFromString(strokeColor);
        UIColor* tColor = nil;
        if ([UIColor respondsToSelector: blackSel])
            tColor  = [UIColor performSelector:blackSel];
        [tColor setStroke];
        [tColor setFill];

        **for (UIBezierPath *_path in pathArray)      
           [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];**              
    }
    else
    {    
        [[UIColor redColor] setStroke];
        [[UIColor redColor] setFill];

        *for (UIBezierPath *_path in pathArray)         
            [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];*
    }
}

这里我的贝塞尔路径存储在一个数组中,所以请让我知道我应该如何进行

问候兰吉特

4

2 回答 2

0

设置循环内的颜色:

    for (UIBezierPath *path in pathArray) {
       [myColor setStroke]
       [path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
     }         

关于命名约定,仅使用 _ 例如变量,而不是本地人。

于 2013-09-03T15:46:17.560 回答
0

尝试在不同的 s 上使用适当的 StartingPoint 和 EndingPoint 绘制不同颜色sUIBezierPath,然后将这些 ShapeLayers 添加到主 ShapeLayer 中,然后将其添加到您的视图中。CAShapeLayerself.mainShapeLayerlayer

例如:-drawRect在初始化并添加mainShapeLayer到你view的之后,用不同的颜色 调用这个方法layer

//In drawRect
self.shapeLayer_main = [CAShapeLayer layer];
[self.layer addSubLayer:self.mainShapeLayer];


-(void)drawPathHavingStartPoint:(CGPoint )startPoint andEndPoint:(CGPoint )endPoint withColor:(UIColor *)color
{
 CAShapeLayer* shapeLayer = [CAShapeLayer layer];
 //Add lineWidth, strokeColor, fillColor, path (with the points) and then add it to the mainShapeLayer
 [self.mainShapeLayer addSublayer:shapeLayer];
 }

希望这能解决您的问题。

于 2013-09-03T15:36:48.460 回答