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.color
是 UIColor
来自图像的模式。当它转换为 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;
我正在使用 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;
但其中 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;