无法启动比旋转持续时间更长的基于旋转的动画?

Posted

技术标签:

【中文标题】无法启动比旋转持续时间更长的基于旋转的动画?【英文标题】:Can't start rotation-based animations longer than rotation duration? 【发布时间】:2014-09-12 02:22:12 【问题描述】:

所以,在我的旋转处理程序中,我正在为横向模式做一些布局。我想在旋转完成后执行一些额外的动画,所以我将持续时间增加到一个更大的值并开始一个关键帧类型的动画。

我发现由于某种原因我无法有效地增加持续时间。无论我将持续时间设置为什么,下面的代码似乎都在旋转的时间跨度(0.4 秒或其他任何时间)内运行。

旋转动画是否已经在进行中,导致无法启动较长的动画?

感谢您的帮助。

  - (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)    toInterfaceOrientation duration:(NSTimeInterval) duration
  
     duration = 10.0;  // overriding the duration to a longer value

  // running some keyframed animation over the longer animation

       [UIView animateKeyframesWithDuration: duration delay:0.0    options:UIViewKeyframeAnimationOptionBeginFromCurrentState
                              animations:^

                                  [UIView addKeyframeWithRelativeStartTime:0.0
                                                          relativeDuration:total_duration_sec
                                                                animations:^ /*do some stuff */ ];

【问题讨论】:

【参考方案1】:

在完成块中添加额外的动画。

[UIView animateKeyframesWithDuration:duration delay:0.0 options:UIViewKeyframeAnimationOptionBeginFromCurrentState 动画:^ completion:NULL];

【讨论】:

谢谢。实际上我已经尝试过,并且确实可以正常工作,但是我想知道为什么较长的关键帧(上图)没有?我觉得我可能会从这个答案中学到一些东西。此外,我可能想在旋转动画完成之前开始一个复杂的动画(例如从 90% 关键帧开始)。有什么想法吗?

以上是关于无法启动比旋转持续时间更长的基于旋转的动画?的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 内的 UIImageView 旋转动画

JS动画在悬停时旋转

Android属性动画之旋转动画

UIView无限360度旋转动画?

无法基于两列旋转 C# 数据表

悬停时启动旋转动画,但悬停时仍会完成