2

我正在使用 UIBezeirPath,并且在我的 drawRect 方法中,我采用了硬编码的颜色以通过以下方式为我的路径(线)设置描边

- (void)drawRect:(CGRect)rect
{ 
 [[UIColor redColor] setFill];
 for (UIBezierPath *_path in pathArray) 
 {
      [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];

  }
}

这工作正常并为我绘制的路径(线)设置红色。现在当我从颜色选项中选择不同颜色时,假设我选择蓝色,现在当我开始绘制路径时,颜色为蓝色,但之前绘制的红线也变为蓝色。这就是整个问题

下面是我的代码我如何设置不同的颜色

- (void)drawRect:(CGRect)rect
{
if(changecolor)
    {
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        strokeColor = appDelegate.color;
        NSLog(@"%@",strokeColor);

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

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

        }
   }
}

无论我这样做是正确的,还是我错过了什么。请帮帮我

问候兰吉特

4

1 回答 1

5

只需在一个数组中保持当前颜色,在另一个数组中保持 bezierpaths。然后像下面那样做图。

    int q=0;

for (UIBezierPath *_path in pathArray) 
{
UIColor *_color = [colorArray objectAtIndex:q];
[_color setStroke];
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0]; 
q++;
}
于 2012-07-17T07:05:49.403 回答