Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UIImageView Transform Scale

I have a UIButton that when pressed, will make a UIImageView scale slightly larger and then back to its normal size. It's working, but I'm running into a problem where the image eventually keeps getting slightly smaller the more you press the button.

How can I change the code so that the image doesn't get smaller as you press the button? Here's the code I have to scale the image slightly larger and then back to normal:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration: 0.2];
myImage.transform = CGAffineTransformScale(myImage.transform, 1.03, 1.03);
[UIView setAnimationDelegate:self];
[UIView commitAnimations];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration: 0.2];             
myImage.transform = CGAffineTransformScale(myImage.transform, 0.97, 0.97);
[UIView setAnimationDelegate:self];
[UIView commitAnimations];

Thanks for any help.

like image 332
c0dec0de Avatar asked Feb 20 '11 19:02

c0dec0de


2 Answers

It's math. Scaling something by 1.03 * 0.97 results in scaling factor of 0.9991 and not 1.0. Either use 1.0/1.03 as your second scaling factor or just set myImage.transform to the identity transform (assuming you are not applying other transformations to that view).

like image 63
Ole Begemann Avatar answered Nov 16 '22 09:11

Ole Begemann


Have you tried saving first transform?

And then instead of using CGAffineTransformScale to shrink your UIImageView you just use your saved transform?

        CGAffineTransform firstTransform = myImage.transform;

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration: 0.2];
        myImage.transform = CGAffineTransformScale(myImage.transform, 1.03, 1.03);
        [UIView setAnimationDelegate:self];
        [UIView commitAnimations];
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration: 0.2];
        myImage.transform = firstTransform;
        [UIView setAnimationDelegate:self];
        [UIView commitAnimations];
like image 3
iWheelBuy Avatar answered Nov 16 '22 11:11

iWheelBuy