UIImageView动画减少宽度

时间:2013-01-04 09:38:43

标签: ios animation uiimageview

我正在开发一个应用程序,它需要在1小时内将imageview的宽度从320减少到0。为此,我使用以下代码

     [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:3600];
    newRect.size.width = 0;
    imgView.frame = newRect;
    [UIView commitAnimations];

如果我们停留在同一个视图控制器中,如果用户导航到其他一个viewcontoller,如何处理动画,则动画启动后,它可以正常工作。

除此之外我还有一个问题 - 在动画期间,imageview中的图像看起来像收缩整个动画我使用相同的图像,所以我想在动画期间更改imageView中的图像我怎样才能实现这一点

除了动画之外还有其他方法吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

控制器和视图的生命周期不允许您这么简单地执行此操作。您正在使用的对象可以并且将被系统释放,如果它们当前不再需要,那么您启动的动画基本上就被丢弃了。

您必须在某处存储动画的进度,例如: G。在文件或CoreData数据库中使其在该视图的实例化中保持不变。根据具体情况,一旦开始动画就可以存储动画的开始时间。然后,在viewWillAppear中,您可以加载它并计算进入该一小时的进度并从该点开始一个新动画。对于用户来说,它看起来好像动画已在后台进行。