UIView取消动画

时间:2010-09-11 20:26:40

标签: iphone animation uiview

我目前有一个视图动画从屏幕的一部分到另一部分。我希望每当按下“暂停”按钮时动画就会暂停。这意味着当我“暂停”动画时,动画需要保持在原位(帧位置)。我尝试了一些东西,但没有任何东西给我我想要的结果。以下是我当前代码的粗略版本。

-(IBAction)startScroll
{
NSLog(@"Start scroll");
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:30];

//set new frame for view

[UIView commitAnimations];  
}

和一种停止动画的方法

-(IBAction)pauseScroll
{
NSLog(@"Pause Scroll");

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:0.1];

//Pause animation in it's current location

[UIView commitAnimations];      

}

2 个答案:

答案 0 :(得分:1)

结束计时器并每隔几秒更新一次contentOffset。希望即使在动画中也有更好的方法来获取当前的坐标。 presentationLayer的东西没有产生成功的结果。

答案 1 :(得分:0)

UIView动画不像那样完全。设置框架后,视图会立即从应用程序的角度移动到那里;它只是用户的动画显示。

您可以使用“表示层”大致弄清楚屏幕上显示的内容(由于合成发生在另一个线程中,它只是近似值):

#import <QuartzCore/CALayer.h>

...

[fooView setFrame:fooView.layer.presentationLayer.frame]