Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIView取消动画_Iphone_Animation_Uiview - Fatal编程技术网

Iphone UIView取消动画

Iphone UIView取消动画,iphone,animation,uiview,Iphone,Animation,Uiview,我目前有一个从屏幕的一部分到另一部分的动画视图。我希望动画在按下“暂停”按钮时暂停。这意味着当我“暂停”动画时,动画需要保持在正确的位置(帧位置)。我试过几次,但都没有达到我想要的效果。下面是我当前代码的大致版本 -(IBAction)startScroll { NSLog(@"Start scroll"); [UIView beginAnimations:nil context:NULL]; [UIView setAnimationBeginsFromCurrentState:YES]; [U

我目前有一个从屏幕的一部分到另一部分的动画视图。我希望动画在按下“暂停”按钮时暂停。这意味着当我“暂停”动画时,动画需要保持在正确的位置(帧位置)。我试过几次,但都没有达到我想要的效果。下面是我当前代码的大致版本

-(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];      

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

您可以使用“表示层”大致了解屏幕上显示的内容(由于合成是在另一个线程中进行的,所以这只是一个近似值):

#导入
...
[fooView设置框架:fooView.layer.presentationLayer.frame]

最后使用计时器,每隔几秒钟更新一次contentOffset。希望有一个更好的方法来查看当前坐标,即使在动画中也是如此。presentationLayer的内容没有产生成功的结果。

我尝试将框架设置为presentationLayer.frame,正如您前面提到的,但由于某些原因,它正在将视图移动到0,0坐标点。还有什么我可以试试的吗?别担心那种行为。。。这是因为我正在尝试设置UIScrollView的动画,而不是帧本身。
#import <QuartzCore/CALayer.h>

...

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