递归animateWithDuration:动画:完成:方法iOS

时间:2015-03-28 02:57:26

标签: ios animation alpha animatewithduration

我试图让我的项目每3秒钟“发光”,将其alpha从高值变为低值并返回。然而它“闪烁”并且基本上每隔0.2秒从颜色变为颜色随机变化。我粘贴了下面的方法。它可能与调用完成时有关但不确定?

-(void)showLoading{
    [self.postTableView setHidden:YES];
    self.isLoading = true;
    //Disappear
    [UIView animateWithDuration:1.5 animations:^(void) {
        self.loadingLabel.alpha = 0.8;
        self.loadingLabel.alpha = 0.3;
    }
    completion:^(BOOL finished){
            //Appear
            [UIView animateWithDuration:1.5 animations:^(void) {
            self.loadingLabel.alpha = 0.3;
            self.loadingLabel.alpha = 0.8;
            }completion:^(BOOL finished2){
                if(true){
                    [self showLoading];
                }
            }];
    }]; }

2 个答案:

答案 0 :(得分:2)

self.loadingLabel.alpha = .8;
[UIView animateWithDuration:1.5 delay:0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat animations:^{
    self.loadingLabel.alpha = .3;
} completion:nil];

UIViewAnimationOptionAutoreverse & UIViewAnimationOptionRepeat 可以为您提供帮助。

你可以通过

来阻止它
self.loadingLabel.alpha = .8;

或其他动画。

[UIView animateWithDuration:1.5 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
    self.loadingLabel.alpha = .8;
} completion:nil];

UIViewAnimationOptionBeginFromCurrentState 是您通过其他动画停止动画的有用选项。

答案 1 :(得分:-2)

-(void)viewDidLoad{
//use schedule timer to call repeatedly showLoading method until loading done
}
-(void)showLoading{
    [self.postTableView setHidden:YES];
    self.isLoading = true;
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1.5];

    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    self.loadingLabel.alpha = 0.3;
    [UIView commitAnimations];


    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1.5];

    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    self.loadingLabel.alpha = 0.8;
    [UIView commitAnimations];
}