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