2

我正在从事UIBezierPath用于绘图的项目。我的问题是当我改变路径的颜色时,整个UIBezierPath颜色都会改变。我想问一下是否可以UIBezierPath用多条线改变颜色。

问候

4

1 回答 1

2

对于一个单一的 UIBezier 路径,你不能 AFAIK

你可以做这样的事情

///// 在drawRect中添加这个

for (NSMutableDictionary *dic in pathArray) {
    UIBezierPath *_path = [dic valueForKey:@"path"];
    [[dic valueForKey:@"fColor"] setFill]; 
    [[dic valueForKey:@"sColor"] setStroke];
    [_path stroke]; 
  }

在触摸事件中填充数组

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    self.currentPath=[[UIBezierPath alloc]init];
    self.currentPath.lineWidth=5;
    self.currentPath.miterLimit=-10;
    self.currentPath.lineCapStyle = kCGLineCapRound;
    self.currentPath.flatness = 0.0;


    UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
    [self.currentPath moveToPoint:[mytouch locationInView:self]];
    NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
    [dic setObject:currentfColor forKey:@"fColor"];
    [dic setObject:currentsColor forKey:@"sColor"];
    [dic setObject:self.currentPath forKey:@"path"];
    [pathArray addObject:dic];

}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    [self.currentPath addLineToPoint:[touch locationInView:self.view]];
    [self.view setNeedsDisplay];
}

PS:这只是一个例子。我还没有检查过这段代码,但它应该可以工作,可能需要一些改动。

于 2013-03-26T06:36:35.023 回答