首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复动画的可变次数

问重复动画的可变次数
EN

Stack Overflow用户
提问于 2011-04-28 18:13:20
回答 4查看 16.3K关注 0票数 14

我想知道怎样才能把动画设置为重复。重复次数需要由一个变量来决定。在下面的代码中,变量int newPage应该确定动画重复的频率。

我尝试过这样做,但是动画(使用块动画)只执行了一次:

代码语言:javascript
复制
for (int temp = 1; temp <= newPage; temp++) {
            [self animatePage];
}

如果我编写了以下代码,它的工作方式就像我希望的那样,但是这是硬编码的(即动画将被重复两次),并且我无法找到一种方法来改变这个动画在代码中执行的次数,并根据我的变量newPage:

代码语言:javascript
复制
[UIView animateWithDuration:0
                      delay:0.1
            options:UIViewAnimationOptionCurveEaseIn
             animations:^{[self animatePage];}
             completion:^(BOOL finished){[self animatePage];}];

我将非常感激的建议,如何重复相同的动画,而不必硬编码的次数,我希望这个动画被重复。

编辑:

我试图实现以下代码,但实际上只执行了一个动画:

代码语言:javascript
复制
        [UIView animateWithDuration:0
                          delay:1
                        options:UIViewAnimationOptionCurveEaseIn
                     animations:^{

                         [UIView setAnimationRepeatCount:2];
                         [self animatePage];

                     }
                     completion:nil];
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-16 22:34:13

也有同样的问题--你错过了一个‘UIView动画’

这应该是可行的:

代码语言:javascript
复制
 [UIView animateWithDuration:0
                      delay:1
                    options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionRepeat
                 animations:^{
                     [UIView setAnimationRepeatCount:2]; // **This should appear in the beginning of the block**
                     [self animatePage];

                 }
                 completion:nil];

为我做了个小把戏。

票数 35
EN

Stack Overflow用户

发布于 2011-04-28 18:15:17

你试过设置repeatCount吗?+ (void)setAnimationRepeatCount:(float)repeatCount

我尝试了下面的代码块,它肯定会为我重复2x (l是一个UITextView,在X dir中是2倍,在Y dir中是3X ):

代码语言:javascript
复制
[UIView animateWithDuration:2 
delay:0.1 
options:UIViewAnimationOptionCurveEaseIn 
animations:^{ [UIView setAnimationRepeatCount:2]; 
l.transform = CGAffineTransformMakeScale(2,3); } completion:nil];
票数 8
EN

Stack Overflow用户

发布于 2011-04-28 18:20:16

你之所以没有看到一个动画,是因为你是在同一个运行环中的一个循环中调用动画,在最后一个调用获胜时(一个动画)。

与其调用[self animatePage],不如尝试调用

代码语言:javascript
复制
[self performSelector:@selector(animatePage) withObject:nil afterDelay:.1 *temp];

这将在单独的线程上创建调用。

您可能需要使用延迟间隔。

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

https://stackoverflow.com/questions/5823162

复制
相关文章

相似问题

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