2

絵を描くために使っているプロジェクトに取り組んでいUIBezierPathます。私の問題は、パスの色を変更すると、全体UIBezierPathの色が変わることです。UIBezierPath複数の線で色を変えられるのか聞いてみたいです。

よろしく

4

1 に答える 1

2

1つの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 に答える