0
votes

I have a UIView that I'm trying to animate.

[UIView beginAnimations:@"scaleAnimation" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:0.5];

CGRect f = self.frame;
f.size.width = f.size.width * 2;
f.size.height = f.size.height * 2;
self.frame = f;

[UIView commitAnimations];

The animation works fine, but is there anyway I can make the animation scale along the center?
Right now, it looks like the point is on the top left corner.

Using CGAffineTransform scale = CGAffineTransformMakeScale(2.0, 2.0); does the animation along the center, but doing a touch event, the points seems to get all messed up when I'm trying to detect transparent area of the UIView.

Thank you,
Tee

1

1 Answers

2
votes

It's simple. Animate the bounds instead. As the documentation says:

Changing the bounds size grows or shrinks the view relative to its center point.

So your code would be like this

[UIView beginAnimations:@"scaleAnimation" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:1.5];

CGRect f = myView.bounds;
f.size.width = f.size.width * 2;
f.size.height = f.size.height * 2;
myView.bounds = f;

[UIView commitAnimations];