iphone - 如何创建多个 UIImageView 动画,使用 CFAffineTransform 在前一个动画结束后开始一个动画

标签 iphone ios animation uiimageview cgaffinetransform

首先感谢您阅读我的问题。我目前正在尝试使用 CFAffineTransform 执行多个动画来复制 kens burn 效果。

尝试实现:缩放到图像,然后向右平移图像。

问题:一旦我开始第二个动画,我的图像将相对于原始图像平移,而不是相对于第一个图像的最终产品平移。这不是我想要达到的效果。

第一个动画是放大图像。

[UIView beginAnimations:@"zoomin" context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:5];

CGAffineTransform zoomIn = CGAffineTransformMakeScale(5.8, 5.8);

imageView.transform = zoomIn;

[UIView commitAnimations];

第二个动画是将图像向左平移。

[UIView beginAnimations:@"panning" context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:5];

CGAffineTransform moveRight = CGAffineTransformMakeTranslation(200, 0);

imageView.transform = moveRight;

[UIView commitAnimations];

第二个动画代码仅在第一个动画结束后调用。

最佳答案

它不起作用,因为你使用的是CGAffineTransformMakeTranslation,这意味着它应该从原始位置开始(仿射是单位矩阵,并将 View 置于未转换状态),你应该使用的是CGAffineTransformTranslate,它需要所需的(或当前变换)矩阵作为第一个参数。

所以如果你这样做:

CGAffineTransform moveRight = CGAffineTransformTranslate(imageView.transform ,200, 0);

你用过

CGAffineTransform moveRight = CGAffineTransformMakeTranslation(200, 0);

这与:

CGAffineTransform moveRight = CGAffineTransformTranslate(CGAffineTransformIdentity ,200, 0);

我建议您阅读一篇很棒的帖子 Demystifying CGAffineTransform

关于iphone - 如何创建多个 UIImageView 动画,使用 CFAffineTransform 在前一个动画结束后开始一个动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7219579/

相关文章:

ios - flickr 无法解析 JSON

iphone - 计时器在模拟器和设备上的行为不同

iphone - Iphone 应用程序的表格边框

iphone - 如何在应用启动前获取主屏幕截图

android - 动画标记谷歌地图如何像 android 中的图像所示?

android - 更改 TextView 时的动画

iphone - 这是转到下一个 UITextField (使用 textFieldShouldReturn)的一种黑客方式吗?

ios - 应用程序关闭后如何保存引脚注释(Swift)

ios - 如何手动调用UITableView的delegate方法?

javascript - CAAT - 重复行为对事件触发的影响