[英]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
并将其添加到view
的layer
后,使用不同的颜色从-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.