3

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

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

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

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

除了动画之外,还有其他方法可以做到这一点。

任何帮助表示赞赏。

4

1 回答 1

5

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

您必须将动画的进度存储在某个地方,例如在文件或 CoreData 数据库中,以使其在该视图的实例化中持久存在。根据具体情况,在动画开始后存储动画的开始时间可能就足够了。然后,viewWillAppear您可以加载它并计算一小时内已经取得了多少进展,并从该点开始一个新的动画。对用户来说,它看起来好像动画是在后台进行的。

于 2013-01-04T09:43:09.593 回答