3

我想做一个小的加载器动画来放入我的应用程序。我之前用 CGAnimations 完成了重复动画没有问题,这次我打算使用块方法。

我正在做一个小测试,但可以重复以下代码:

- (void) startLoading {

    __block int count = 0;

    [UIView animateWithDuration:0.4
                          delay: 0.0
                        options: UIViewAnimationOptionRepeat
                     animations:^{
                         count++;
                     }
                     completion:^(BOOL finished){

                         if (count > 5)
                             count = 0;
                         NSLog(@"%d", count);

                     }];

}

- (void) stopLoading {

}

以上仅触发完成块一次,不会重复。

如何让块重复以使计数增加?

如果我得到这个工作并将我的动画放入重复块中, stopLoading 会发生什么:再次停止动画?

感谢您提供的任何帮助:)

4

1 回答 1

5

这是一个有限重复动画:

- (void) animate: (int) count {
    CGPoint origC = v.center;
    void (^anim) (void) = ^{
        v.center = CGPointMake(100,100);
    };    
    void (^after) (BOOL) = ^(BOOL finished) {
        v.center = origC;
        if (count)
            [self animate:count-1];
    };
    int opts = UIViewAnimationOptionAutoreverse;
    [UIView animateWithDuration:1 delay:0 options:opts 
                     animations:anim completion:after];
}

这里有一个递归,所以我们不想太过分,否则我们会用完内存,但如果我们限制我们的计数(在你的例子中是 5),我们应该没问题。

于 2011-12-06T03:33:54.680 回答