UIImageView 变换 缩放

6

我有一个UIButton,按下时将使UIImageView稍微放大,然后恢复到其正常大小。它正在工作,但是我遇到了一个问题,即随着你不断按下按钮,图像最终会变得越来越小。

我该如何更改代码,使得在按下按钮时图像不会变小?以下是我用来轻微缩放图像并将其恢复到正常状态的代码:

[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];

感谢你的任何帮助。
3个回答

6

这是一个数学问题。通过 1.03 * 0.97 进行缩放,结果缩放比例为 0.9991 而不是 1.0。你可以使用 1.0/1.03 作为第二个缩放因子,或者将 myImage.transform 设置为标识变换(假设你没有对该视图应用其他变换)。


3

你尝试过先保存第一次的变换吗?

然后,不使用 CGAffineTransformScale 来缩小你的 UIImageView,而是使用你保存的变换?

        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];

1

您遇到了浮点算术和累积矩阵操作的限制。您永远无法表示3/100,只能用像0.030.0330.0333这样的值来近似表示。

对于您的问题,最好将第二个变换设置为CGAffineTransformIdentity


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接