使用CGAffineTransformTranslate时的持续时间

时间:2011-05-08 10:07:48

标签: iphone duration cgaffinetransform

我正在使用CGAffineTransformTranslate移动视图,并希望减慢移动速度。我尝试使用[UIView setAnimationDuration],但它没有做任何事情,文档不鼓励它在iOS 4.0及更高版本中使用。

whatIfToolBar.transform = CGAffineTransformTranslate(whatIfToolBar.transform,0.0, -whatIfToolBar.frame.size.height);

设定持续时间的正确方法是什么?

谢谢,

约翰

1 个答案:

答案 0 :(得分:4)

在问我的问题之前,我应该进一步阅读...

[UIView setAnimationDuration]仅在使用Begin / Commit方法时有效,并且必须在调用begin和commit动画之间以及更改视图的任何可动画属性之前调用。

对于iOS 4或更高版本的应用程序,您应该使用基于块的方法进行动画制作。调用块方法时设置持续时间。请参阅Animations section of the View Programming Guide for iOS"

如果您的应用程序将在iOS 3.2及更早版本中运行,则必须使用Begin / Commit方法。

就我而言,我使用了Begin / Commit方法......

[UIView beginAnimations:@"whatIfToolBar" context:whatIfToolBar];

[UIView setAnimationDuration:0.5];
whatIfToolBar.transform = CGAffineTransformTranslate(CGAffineTransformIdentity,0.0, - whatIfToolBar.frame.size.height);

[UIView commitAnimations];

如果我使用基于块的方法,它将看起来像这样......

[UIView animateWithDuration:0.5 
          animations:^{
               whatIfToolBar.transform = CGAffineTransformTranslate(CGAffineTransformIdentity,0.0, -whatIfToolBar.frame.size.height);

          }
];

约翰