如何通过选择颜色选项为UIBezierPath设置不同的颜色

时间:2012-06-20 14:02:51

标签: iphone ios cocoa-touch core-graphics uibezierpath

我正在使用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];

        }
   }
}

我是以正确的方式行事,还是我错过了什么。请帮帮我

此致 兰吉特

1 个答案:

答案 0 :(得分:5)

只需保持一个数组中的当前颜色和另一个数组中的bezierpath。然后如下图所示。

    int q=0;

for (UIBezierPath *_path in pathArray) 
{
UIColor *_color = [colorArray objectAtIndex:q];
[_color setStroke];
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0]; 
q++;
}