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

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

我的path.color是来自图像图案的UIColor。将其转换为CGColor时,image pattern颠倒了。我知道这是因为iOS和核心图形使用不同的绘图起点。

我努力了
shapeLayer.transform = CATransform3DMakeRotation(M_PI, 0.0, 0.0, 1.0);


shapeLayer.geometryFlipped = YES;

但是他们都不起作用。

如何翻转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;

10-08 05:36
查看更多