0

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

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

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

谢谢,

约翰

4

1 回答 1

4

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

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

对于 iOS 4 或更高版本的应用程序,您应该使用基于块的动画方法。调用块方法时设置持续时间。请参阅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);

          }
];

约翰

于 2011-05-10T11:09:19.533 回答