【问题标题】:UIView cancel animationUIView 取消动画
【发布时间】:2010-09-11 20:26:39
【问题描述】:

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

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

}

【问题讨论】:

    标签: iphone animation uiview


    【解决方案1】:

    最后使用计时器并每隔几秒更新一次 contentOffset。希望即使在动画期间也有更好的方法来查看当前坐标。 presentationLayer 的东西没有产生成功的结果。

    【讨论】:

      【解决方案2】:

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

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

      #import <QuartzCore/CALayer.h>
      
      ...
      
      [fooView setFrame:fooView.layer.presentationLayer.frame]
      

      【讨论】:

      • 我尝试将框架设置为您之前提到的presentationLayer.frame,但由于某种原因,它设置它正在将视图移动到0,0坐标点。还有什么我可以尝试的吗?
      • 没关系,这种行为是预期的......这是因为我试图为 UIScrollView 而不是框架本身设置动画。
      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多