2010-09-11 65 views
2

我目前有一个视图从屏幕的一个部分到另一个部分的动画。我希望动画在按下“暂停”按钮时暂停。这意味着当我“暂停”动画时,动画需要保持在原来的位置(框架位置)。我已经尝试了一些东西,但没有给我我想要的结果。以下是我当前代码的粗略版本。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];  

} 

回答

1

结束了一个计时器会和更新contentOffset每隔几秒钟。希望有一个更好的方法可以在动画中看到当前的坐标。 presentationLayer的东西没有产生成功的结果。

0

的UIView动画不相当工作这样。一旦你设置框架,视图立即从你的应用程序的角度移动;它只是给用户显示动画。

您可以使用“表现层”找出大致什么正在显示在屏幕上(这只是近似的,因为合成在另一个线程发生):

#import <QuartzCore/CALayer.h> 

... 

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

我尝试将帧设置为presentationLayer.frame,如前所述,但出于某种原因,它将它设置为将视图移动到0,0坐标点。还有什么我可以尝试? – Jeff 2010-09-13 01:44:23

+0

没想到会有这种行为......这是因为我试图为UIScrollView创建动画而不是框架本身。 – Jeff 2010-09-13 01:47:43