我打算做一个在背景中不断变换颜色的应用程序。在我的想法中,应该有一个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];
然而,这不仅看起来很乱,而且也不会重演。有什么建议吗?
答案 0 :(得分:1)
拥有一系列颜色和currentColorIndex
属性。能够为您提供列表中的颜色列表和当前位置的东西。现在有一个方法,其中包含一个animateWithDuration:
。在该方法中,获取下一个颜色然后更新索引(当它到达结束时回绕到0)并运行动画。在动画completion
块中,再次调用该方法。