UIView取消动画
问题描述:
我目前有一个视图从屏幕的一个部分到另一个部分的动画。我希望动画在按下“暂停”按钮时暂停。这意味着当我“暂停”动画时,动画需要保持在原来的位置(框架位置)。我已经尝试了一些东西,但没有给我我想要的结果。以下是我当前代码的粗略版本。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];
}
答
结束了一个计时器会和更新contentOffset每隔几秒钟。希望有一个更好的方法可以在动画中看到当前的坐标。 presentationLayer的东西没有产生成功的结果。
答
的UIView动画不相当工作这样。一旦你设置框架,视图立即从你的应用程序的角度移动;它只是给用户显示动画。
您可以使用“表现层”找出大致什么正在显示在屏幕上(这只是近似的,因为合成在另一个线程发生):
#import <QuartzCore/CALayer.h>
...
[fooView setFrame:fooView.layer.presentationLayer.frame]
我尝试将帧设置为presentationLayer.frame,如前所述,但出于某种原因,它将它设置为将视图移动到0,0坐标点。还有什么我可以尝试? – Jeff 2010-09-13 01:44:23
没想到会有这种行为......这是因为我试图为UIScrollView创建动画而不是框架本身。 – Jeff 2010-09-13 01:47:43