I am drawing polygon using CGPath
and adding to CAShapeLayer
.I want to scale my CGPath
when user click on it. I know how to scale CGPath
. But when i click my CGPath
, my CGPath
drawing far from centre while i am drawing polygon in centre.
CGAffineTransform scaleTransform = CGAffineTransformMakeScale(scaleFactor, scaleFactor);
CGPathRef oldPath = polygonLayer.path;
CGPathRef scaledPath = CGPathCreateCopyByTransformingPath(oldPath, &scaleTransform);
polygonLayer.path = scaledPath;
The problem is that you're used to UIView transformation, which is done from the center of the view.
CGPath transformation is done on the points (imagine
CGPointZero
as the center of the path).My solution: translate to CGPointZero , scale , and then back to your original coordinates.