我目前有一个视图动画从屏幕的一部分到另一部分。我希望每当按下“暂停”按钮时动画就会暂停。这意味着当我“暂停”动画时,动画需要保持在原位(帧位置)。我尝试了一些东西,但没有任何东西给我我想要的结果。以下是我当前代码的粗略版本。
-(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];
}
答案 0 :(得分:1)
结束计时器并每隔几秒更新一次contentOffset。希望即使在动画中也有更好的方法来获取当前的坐标。 presentationLayer的东西没有产生成功的结果。
答案 1 :(得分:0)
UIView动画不像那样完全。设置框架后,视图会立即从应用程序的角度移动到那里;它只是用户的动画显示。
您可以使用“表示层”大致弄清楚屏幕上显示的内容(由于合成发生在另一个线程中,它只是近似值):
#import <QuartzCore/CALayer.h>
...
[fooView setFrame:fooView.layer.presentationLayer.frame]