首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在动画块中调用时,UIView动画无法无限期地重复。

在动画块中调用时,UIView动画无法无限期地重复。
EN

Stack Overflow用户
提问于 2013-12-02 23:51:14
回答 1查看 747关注 0票数 0

我已经创建了自己版本的UIActivityIndicatorView,它在UIImageView处于活动状态时无限期地旋转。问题是,如果动画(下面的代码)是从另一个动画块中启动的(例如,当一个视图被推到导航堆栈上时),动画就会被取消,旋转器仍然处于非动画状态。

代码语言:javascript
运行
复制
- (void) spin: (UIViewAnimationOptions) options {
  [UIView animateWithDuration: 0.5f
                        delay: 0.0f
                      options:options
                   animations: ^{
                     self.transform = CGAffineTransformRotate(self.transform, M_PI / 2);
                   } completion: ^(BOOL finished) {
                     if (finished) {
                       if (self.isAnimating) {
                         [self spinWithOptions: UIViewAnimationOptionCurveLinear];
                       } else if (options != UIViewAnimationOptionCurveEaseOut) {
                         [self spinWithOptions: UIViewAnimationOptionCurveEaseOut];
                       }
                     }
                   }];
}


- (void) startAnimating {
  if (!self.isAnimating) {
    self.isAnimating = YES;
    [self spin: UIViewAnimationOptionCurveEaseIn];
  }
}

一种可能的解决方案是在第一次调用spin: (即performSelector:withOptions:afterDelay)之前插入人为的延迟,但这是一个很难看的攻击。

有什么方法可以确保这个旋转不会被外部动画块取消,或者是一个更好的方法来处理它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-03 00:47:27

根据UIView动画指南:

默认情况下,嵌套动画确实继承了父动画的持续时间和动画曲线,但是即使是这些选项也可以根据需要被重写。嵌套动画块中使用的UIViewAnimationOptionOverrideInheritedCurveUIViewAnimationOptionOverrideInheritedDuration键允许为第二动画修改来自第一动画的曲线和持续时间值。如果这些键不存在,则将使用外部动画块的持续时间和曲线。

传递这些选项以覆盖从外部动画块继承的属性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20340210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档