我正在研究 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]
”,它也不起作用。
如果我不使用该方法,它会照常工作。感谢。
答案 0 :(得分:1)
您正在调用setAnimationStartDate
,这意味着您正在为此动画提供开始时间。所以,在那个时间到来之前它不会开始。
在beginAnimations:context:和commitAnimations方法之间调用此方法,以指定该组动画的开始时间。并在更改视图的可动画属性之前调用此方法。 (不要将此方法与基于块的动画一起调用。)如果不调用此方法,则将开始时间设置为CFAbsoluteTimeGetCurrent函数返回的值,该函数将尽快开始动画。
在iOS 4.0及更高版本中不鼓励使用此方法。您应该使用基于块的动画方法来指定动画。
请参阅文档以获取更多详细信息。
希望这会有所帮助:)
答案 1 :(得分:0)
看看that。我认为您只需要使用类animateWithDuration:delay:options:animations:completion:
的方法UIView
重构代码。
答案 2 :(得分:0)
您可以使用setAnimationDelay:
获得相同的功能。它有效!!
[UIView setAnimationDelay:5];
查看有关Apple Documentation的更多详情。不确定为什么setAnimationStartDate:
不起作用,它应该有效,因为上面的文档中已经提到过。