我正在开发一个应用程序,它需要在1小时内将imageview的宽度从320减少到0。为此,我使用以下代码
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3600];
newRect.size.width = 0;
imgView.frame = newRect;
[UIView commitAnimations];
如果我们停留在同一个视图控制器中,如果用户导航到其他一个viewcontoller,如何处理动画,则动画启动后,它可以正常工作。
除此之外我还有一个问题 - 在动画期间,imageview中的图像看起来像收缩整个动画我使用相同的图像,所以我想在动画期间更改imageView中的图像我怎样才能实现这一点
除了动画之外还有其他方法吗?
感谢任何帮助。
答案 0 :(得分:5)
控制器和视图的生命周期不允许您这么简单地执行此操作。您正在使用的对象可以并且将被系统释放,如果它们当前不再需要,那么您启动的动画基本上就被丢弃了。
您必须在某处存储动画的进度,例如: G。在文件或CoreData数据库中使其在该视图的实例化中保持不变。根据具体情况,一旦开始动画就可以存储动画的开始时间。然后,在viewWillAppear
中,您可以加载它并计算进入该一小时的进度并从该点开始一个新动画。对于用户来说,它看起来好像动画已在后台进行。