0

我打算做一个在背景中不断变化颜色的应用程序。在我的想法中,应该有一个 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];

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

4

1 回答 1

1

有一组颜色和一个currentColorIndex属性。可以为您提供颜色列表和列表中当前位置的东西。现在有一个单一的方法,其中有一个animateWithDuration:。在该方法中,获取下一个颜色,然后更新索引(当它到达末尾时返回 0)并运行动画。在动画completion块中,再次调用该方法。

于 2013-08-25T10:55:13.383 回答