8

我编写了以下代码来使我的 UIView 不断淡入淡出。(FadeAlphaValue 是一个 BOOL)...

-(void) fade {
    [UIView animateWithDuration:1.0
                     animations:^{
                         fadeView.alpha = (int)fadeAlphaValue;
                     }
                     completion:^(BOOL finished){
                         fadeAlphaValue=!fadeAlphaValue;
                         [self fade];
                     }];
}

它有效,但我有一种感觉,如果我让它永远运行它会导致一些奇怪的崩溃......我不熟悉[..^{..} completion^{...}];那个符号。而且我觉得因为我在完成过程中调用了“fade”函数,所以直到“fade”函数完成它才会真正完成,问题是fade函数会在完成之前再次调用自己,依此类推,这似乎是一个无限循环......这会在几百次迭代后导致某种奇怪的多线程冻结吗?

4

1 回答 1

14

更好的方法是使用UIViewAnimationOptionRepeat将无限期重复动画的选项。

[UIView animateWithDuration:1.0f
                      delay:0.0f
                    options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse
                 animations:^{
                     // your animation code here
                 }
                completion:nil];//NOTE - this REPEAT animation STOPS if you exit the app (or viewcontroller)... so you must call it again (and reset all animation variables (e.g. alpha) in the UIApplicationDidBecomeActiveNotification function as well (or when the viewcontroller becomes active again)! 
于 2013-09-25T05:26:29.737 回答