1

描画を行っていUIBezierPathて、パスに別の色を選択したいのですが、すべてのパスが現在選択されている色に設定されているため、この問題をどのように解決すればよいでしょうか。以下は私のコードです

(void)drawRect:(CGRect)rect
{
    if(changecolor)
    {
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        strokeColor = appDelegate.color;

        SEL blackSel = NSSelectorFromString(strokeColor);
        UIColor* tColor = nil;
        if ([UIColor respondsToSelector: blackSel])
            tColor  = [UIColor performSelector:blackSel];
        [tColor setStroke];
        [tColor setFill];

        **for (UIBezierPath *_path in pathArray)      
           [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];**              
    }
    else
    {    
        [[UIColor redColor] setStroke];
        [[UIColor redColor] setFill];

        *for (UIBezierPath *_path in pathArray)         
            [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];*
    }
}

ここで私のベジェパスは配列に保存されているので、どうすればよいか教えてください

よろしくランジット

4

2 に答える 2

0

さまざまな上に適切なStartingPointEndingPointを使用してさまざまUIBezierPathな色で を描画し、それらの ShapeLayers をメインの ShapeLayerに追加してから、それをビューの に追加してみてください。CAShapeLayerself.mainShapeLayerlayer

例:を初期化して に追加した後、 このメソッド-drawRectを異なる色で呼び出しmainShapeLayerますviewlayer

//In drawRect
self.shapeLayer_main = [CAShapeLayer layer];
[self.layer addSubLayer:self.mainShapeLayer];


-(void)drawPathHavingStartPoint:(CGPoint )startPoint andEndPoint:(CGPoint )endPoint withColor:(UIColor *)color
{
 CAShapeLayer* shapeLayer = [CAShapeLayer layer];
 //Add lineWidth, strokeColor, fillColor, path (with the points) and then add it to the mainShapeLayer
 [self.mainShapeLayer addSublayer:shapeLayer];
 }

これで問題が解決することを願っています。

于 2013-09-03T15:36:48.460 に答える