CAShapeLayer strokeColor 从图像模式 UIColor 到 CGColor 颠倒

CAShapeLayer strokeColor from image pattern UIColor to CGColor upside down

我正在使用 CABasicAnimation 绘制数组中的所有 UIBezierPaths 使用 CAShapeLayer

CAShapeLayer *shapeLayer = [CAShapeLayer layer];    
shapeLayer.path = [path CGPath];
shapeLayer.strokeColor = path.color.CGColor;

我的 path.colorUIColor 来自图像的模式。当它转换为 CGColor 时,image pattern 是颠倒的。我知道那是因为 iOS 和核心图形使用不同的绘图起点。

我试过了

shapeLayer.transform = CATransform3DMakeRotation(M_PI, 0.0, 0.0, 1.0);

shapeLayer.geometryFlipped = YES;

但其中 none 有效。

如何将 strokeColor 图像图案翻转 180 度以匹配原点 UIColor

如您所料,坐标系不同。在这种情况下,原点位于左下角 (0, 0)

因此,您可以通过使用图像编辑器自己翻转图像或使用如下代码来进行补偿:

UIImage *flippedPatternImage = [UIImage imageWithCGImage:patternImage.CGImage scale:1.0f orientation:UIImageOrientationLeftMirrored];

UIColor *colorWithImagePattern = [UIColor colorWithPatternImage:flippedPatternImage];

最后分配给strokeColor:

shapeLayer.strokeColor = path.color.CGColor;