为什么“+(void)setAnimationStartDate:(NSDate *)startDate;”不起作用

时间:2016-05-19 11:07:00

标签: ios objective-c nsdate uiviewanimation

我正在研究 UIView Animation ,我发现当我使用“+ (void)setAnimationStartDate:(NSDate *)startDate;”在 beginAnimations:context commitAnimations 方法之间,它不起作用

[UIView beginAnimations:@"demo" context:nil];
[UIView setAnimationDuration:3.0f];
[UIView setAnimationStartDate:[NSDate date]];
// do something
[UIView commitAnimations];

由于方法默认为现在(NSDate日期),我甚至尝试“[NSDate dateWithTimeIntervalSinceNow:5]”,它也不起作用。

如果我不使用该方法,它会照常工作。感谢。

3 个答案:

答案 0 :(得分:1)

您正在调用setAnimationStartDate,这意味着您正在为此动画提供开始时间。所以,在那个时间到来之前它不会开始。

Apple Documentation所述,

  

在beginAnimations:context:和commitAnimations方法之间调用此方法,以指定该组动画的开始时间。并在更改视图的可动画属性之前调用此方法。 (不要将此方法与基于块的动画一起调用。)如果不调用此方法,则将开始时间设置为CFAbsoluteTimeGetCurrent函数返回的值,该函数将尽快开始动画。

在iOS 4.0及更高版本中不鼓励使用此方法。您应该使用基于块的动画方法来指定动画。

请参阅文档以获取更多详细信息。

希望这会有所帮助:)

答案 1 :(得分:0)

看看that。我认为您只需要使用类animateWithDuration:delay:options:animations:completion:的方法UIView重构代码。

答案 2 :(得分:0)

您可以使用setAnimationDelay:获得相同的功能。它有效!!

[UIView setAnimationDelay:5];

enter image description here 查看有关Apple Documentation的更多详情。不确定为什么setAnimationStartDate:不起作用,它应该有效,因为上面的文档中已经提到过。