繁体   English   中英

在iOS中使用不同颜色绘制UIBezierPath

[英]Drawing UIBezierPath with different colors in iOS

我正在使用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];*
    }
}

我的bezierpaths存储在一个数组中,所以请让我知道如何进行

问候兰吉特

试着画UIBezierPath s的不同颜色与适当的起点EndingPoint在不同CAShapeLayer S和那些ShapeLayers添加到主ShapeLayer说self.mainShapeLayer ,然后将其添加到您的视图的layer

例如:在初始化mainShapeLayer并将其添加到viewlayer后,使用不同的颜色从-drawRect调用此方法

//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];
 }

希望这能解决您的问题。

在循环内设置颜色:

    for (UIBezierPath *path in pathArray) {
       [myColor setStroke]
       [path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
     }         

关于命名约定,仅将_用作变量,而不用于本地变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM