1

我创建了一个包含三个子视图的视图。

我想淡入/淡出三个子视图并无限期地重复效果。

我尝试类似:

+ (void)fadeIn:(UIView *)view withDuration:(float)duration
{
    [UIView animateWithDuration:duration animations:^{
        view.alpha = 1.0;
    }];
}

+ (void)fadeOut:(UIView *)view withDuration:(float)duration
{
    [UIView animateWithDuration:duration animations:^{
        view.alpha = 0.0;
    }];
}

[UIView animateWithDuration:5.0
                      delay:2.0
                    options:UIViewAnimationCurveLinear | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
                 animations:^
{
    [Utilities fadeOut:headSubtitle_1 withDuration:1];
    [Utilities fadeIn:headSubtitle_2 withDuration:1];
    [Utilities fadeOut:headSubtitle_2 withDuration:1];
    [Utilities fadeIn:headSubtitle_3 withDuration:1];
    [Utilities fadeOut:headSubtitle_3 withDuration:1];
    [Utilities fadeIn:headSubtitle_1 withDuration:1];
}
                 completion:^(BOOL finished)
{}];

但效果不好。

我将获得的效果是:

  1. 显示 headSubtitle_1 2 秒
  2. 1 秒内淡出 headSubtitle_1
  3. 1 秒内淡入 headSubstitle_2
  4. 显示 headSubstitle_2 2 秒
  5. 1 秒内淡出 headSubtitle_2
  6. 1 秒内淡入 headSubstitle_3
  7. 显示 headSubstitle_3 2 秒
  8. 1 秒内淡出 headSubtitle_3
  9. 1 秒内淡入 headSubtitle_1
  10. 重复到 1。

非常感谢 !

编辑

最后,我尝试这样的事情:

+ (void)runAnimationSubtitleOrdersWithSub1:(UITextView *)headSubtitle_1 andSub2:(UITextView *)headSubtitle_2 andSub3:(UITextView *)headSubtitle_3
{
    [UIView animateWithDuration:1.0 delay:1.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
        headSubtitle_1.alpha = 0;
    } completion:^(BOOL finished) {
        if (finished)
        {
            [UIView animateWithDuration:1.0 delay:1.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
                headSubtitle_2.alpha = 1;
            } completion:^(BOOL finished) {
                if (finished)
                {
                    [UIView animateWithDuration:1.0 delay:1.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
                        headSubtitle_2.alpha = 0;
                    } completion:^(BOOL finished) {
                        if (finished)
                        {
                            [UIView animateWithDuration:1.0 delay:1.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
                                headSubtitle_3.alpha = 1;
                            } completion:^(BOOL finished) {
                                if (finished)
                                {
                                    [UIView animateWithDuration:1.0 delay:1.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
                                        headSubtitle_3.alpha = 0;
                                    } completion:^(BOOL finished) {
                                        if (finished)
                                        {
                                            [UIView animateWithDuration:1.0 delay:1.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
                                                headSubtitle_1.alpha = 1;
                                            } completion:^(BOOL finished) {
                                                [FormBuilder runAnimationSubtitleOrdersWithSub1:headSubtitle_1 andSub2:headSubtitle_2 andSub3:headSubtitle_3];
                                            }];
                                        }
                                    }];
                                }
                            }];
                        }
                    }];
                }
            }];
        }
    }];
}

真的很丑!如果有人知道更好的方法来做到这一点。

4

2 回答 2

2

也许你可以用这样的东西玩几个动画(但是,它并不漂亮):

_imageView.alpha = 0.0f;
_imageView2.alpha = 0.0f;
_imageView3.alpha = 0.0f;


[UIView animateWithDuration:1
                      delay:0
                    options:UIViewAnimationCurveLinear | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
                 animations:^{

                     _imageView.alpha = 1.0f;

                     [UIView animateWithDuration:1
                                           delay:1
                                         options:UIViewAnimationCurveLinear | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
                                      animations:^{

                                          _imageView2.alpha = 1.0f;

                                      } completion:^(BOOL finished) {

                                          _imageView2.alpha = 0.0f;

                                      }
                      ];


                 } completion:^(BOOL finished) {

                     _imageView.alpha = 0.0f;


                 }
 ];
于 2013-09-26T09:46:28.440 回答
0

看看[UIView beginAnimations:(NSString *) context:(void *)]

于 2013-09-26T10:43:10.887 回答