0
私は単純な描画クラスを持っています。色選択バーを含むビューコントローラがあります。次に、CGRect描画関数を持つUIView。xCode draw - CGRectで色の選択を維持しようとしています
色を変更すると、既存のすべてのストロークが変更されます。私は何を台無しにしたのですか?新しいストロークの色を変更したいだけです。
何か歓迎致します。関連するコードスニペットは次のとおりです。
- (void)drawRect:(CGRect)rect
{
[currentColor setStroke];
for (UIBezierPath *_path in pathArray)
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
#pragma mark - Touch Methods
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
swiped = NO;
myPath=[[UIBezierPath alloc]init];
myPath.lineWidth=10;
UITouch *touch= [touches anyObject];
[myPath moveToPoint:[touch locationInView:self]];
[pathArray addObject:myPath];
if ([touch tapCount] == 2) {
[self eraseButtonClicked];
return;
}
lastPoint = [touch locationInView:self];
lastPoint.y -= 20;
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
swiped = YES;
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:self];
currentPoint.y -= 20;
[myPath addLineToPoint:[touch locationInView:self]];
[self setNeedsDisplay];
UIGraphicsBeginImageContext(self.frame.size);
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 15.0);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), red, green, blue, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
UIGraphicsEndImageContext();
lastPoint = currentPoint;
moved++;
if (moved == 10) {
moved = 0;
}
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if ([touch tapCount] == 2) {
[self eraseButtonClicked];
return;
}
}
こんにちはタイラー後に答えるためのおかげで
[colorArray addObject:currentColor];
を追加することができます。おそらく私は完全に理解していない..私は7色のセグメント化されたコントロールを持っています。あなたはそれらの配列を作るべきだと言っていますか?ユーザーが特定のボタンをタップするとどうなりますか。詳しく教えてください。回答をいただきありがとうございます。David –ユーザーがカラーコントロールをタップしたときにcurrentColor変数を変更しているとします。これでうまくいくが、新しいパスをpathArrayに追加するときにユーザーが選択した色を追跡する必要がある。 PathArrayと一致する新しい配列にcurrentColorを追加することをお勧めします。 –
また、pathArrayからパスを削除すると、対応する色もcolorArrayから削除する必要があります。そうしないと、対応する色は同期されません。 –