Tuesday, 6 August 2013

UIImageView & CGAffineTransformScale, getting wrong path

UIImageView & CGAffineTransformScale, getting wrong path

I'm trying to add a border to image (UIImageView), everything works fine
except one thing: when i'm resizing image i'm getting larger ( or smaller)
shape. Here's some code:
CGPoint center = view.center; // view is a UIImageView
CGAffineTransform transform = CGAffineTransformIdentity;
CGFloat angle = [(NSNumber *)[view
valueForKeyPath:@"layer.transform.rotation.z"] floatValue];
CGFloat scale = [(NSNumber *)[view
valueForKeyPath:@"layer.transform.scale"] floatValue];
transform = CGAffineTransformTranslate(transform, center.x, center.y);
transform = CGAffineTransformScale(transform, scale, scale);
transform = CGAffineTransformRotate(transform, angle);
transform = CGAffineTransformTranslate(transform, -center.x, -center.y);
CGPathRef path = CGPathCreateWithRect(view.frame, &transform); // looks
like the problem is here
shape.path = path; // shape is a CAShapeLayer
CGPathRelease(path);

No comments:

Post a Comment