我有一个方法接受一个UIBezierPath作为参数并相应地绘制一个形状。如果我使用纯色填充图形,渲染效果会很好,但如果尝试使其具有Alpha透明色,我首先会收到ARC警告,要求更改代码并使用桥接,然后填充颜色根本不渲染。CAShapeLayer fillColor不呈现
这工作,但不是我想要的:
standShapeLayer.fillColor = [[UIColor redColor] CGColor];
这产生电弧警告“到C指针CGColorRef目标C指针类型的UIColor的隐式转换”。
standShapeLayer.fillColor = [UIColor colorWithRed:0.2 green:0.66 blue:0.86 alpha:2.0f];
此运行,但没有填充颜色应用于形状:
standShapeLayer.fillColor = (__bridge CGColorRef)([UIColor colorWithRed:0.2 green:0.66 blue:0.86 alpha:2.0f]);
下面是该方法的整个代码:
-(void)drawShape:(UIBezierPath *)standShape {
[standShapeLayer removeFromSuperlayer];
selectedStand = standShape;
standShapeLayer = [CAShapeLayer layer];
standShapeLayer.path = standShape.CGPath;
standShapeLayer.fillColor = (__bridge CGColorRef)([UIColor colorWithRed:0.2 green:0.66 blue:0.86 alpha:2.0f]);
NSLog(@"color = %@", standShapeLayer.fillColor); // This logs the correct colour which is not rendered.
// standShapeLayer.fillColor = [[UIColor redColor] CGColor]; << This works but is not what I need.
standShapeLayer.strokeColor = [[UIColor redColor] CGColor];
standShapeLayer.lineWidth = 2;
[_imageView.layer addSublayer:standShapeLayer];
}
什么我需要怎样做才能让颜色用alpha来填充CAShapeLayer形状?
虽然你可能是正确的,仍然呈现为我的阿尔法水平在1.0以上的颜色。对于我来说,问题是通过添加'CGColor'来填充color属性来解决的。 – Ryan
如果它有用,你仍然可以upvote我的答案:) – Avt