Ran*_*jit 2 iphone cocoa-touch core-graphics ios uibezierpath
我正在使用UIBezeirPath,并且在我的drawRect方法中,我采用硬编码颜色以下面的方式为我的路径(行)设置setStroke
- (void)drawRect:(CGRect)rect
{
[[UIColor redColor] setFill];
for (UIBezierPath *_path in pathArray)
{
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,并为我绘制的路径(线)设置红色.现在,当我从颜色选项中选择不同颜色时,假设我选择蓝色,现在当我开始绘制路径时,颜色为蓝色,但之前绘制的红线也变为蓝色.这就是整个问题
下面是我的代码如何设置不同的颜色
- (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];
}
}
}
Run Code Online (Sandbox Code Playgroud)
我是以正确的方式行事,还是我错过了什么.请帮帮我
问候Ranjit
只需在一个数组中保持当前颜色,在另一个数组中保持bezierpath.然后如下图所示.
int q=0;
for (UIBezierPath *_path in pathArray)
{
UIColor *_color = [colorArray objectAtIndex:q];
[_color setStroke];
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
q++;
}
Run Code Online (Sandbox Code Playgroud)