重复更改背景视图的颜色和动画

时间:2013-08-25 09:46:06

标签: ios uiviewanimation

我打算做一个在背景中不断变换颜色的应用程序。在我的想法中,应该有一个UIView动画在另一个之后应该一次又一次地重复。这是我的尝试

self.view.backgroundColor = [UIColor whiteColor];
[UIView animateWithDuration:4 delay:0 options: UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAutoreverse  animations:^{
    [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        self.view.backgroundColor = [UIColor yellowColor];
        NSLog(@"1");
    } completion:^(BOOL finished){
        [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
            self.view.backgroundColor = [UIColor greenColor];
            NSLog(@"2");
        } completion:^(BOOL finished){
            [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
                self.view.backgroundColor = [UIColor redColor];
                NSLog(@"3");
            } completion:^(BOOL finished){
                [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
                    self.view.backgroundColor = [UIColor purpleColor];
                    NSLog(@"4");
                } completion:NULL];
            }];
        }];
    }];


} completion:NULL];

然而,这不仅看起来很乱,而且也不会重演。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

拥有一系列颜色和currentColorIndex属性。能够为您提供列表中的颜色列表和当前位置的东西。现在有一个方法,其中包含一个animateWithDuration:。在该方法中,获取下一个颜色然后更新索引(当它到达结束时回绕到0)并运行动画。在动画completion块中,再次调用该方法。