Ios 使用动画更改子视图的颜色?

Ios 使用动画更改子视图的颜色?,ios,objective-c,animation,uiviewanimation,Ios,Objective C,Animation,Uiviewanimation,我有一个UISlider,并成功地在滑块轨迹中添加了一些子视图。我想用动画逐个更改子视图的颜色。 这个例子可能会对您有所帮助,很抱歉第一次没有完全理解您: typedef void (^VoidBlock)(void); @interface ClassName () @property (nonatomic, strong)VoidBlock animationBlock; @end - (void)runAnimation { NSArray *views = @[vi

我有一个UISlider,并成功地在滑块轨迹中添加了一些子视图。我想用动画逐个更改子视图的颜色。

这个例子可能会对您有所帮助,很抱歉第一次没有完全理解您:

typedef void (^VoidBlock)(void);
@interface ClassName ()

@property (nonatomic, strong)VoidBlock animationBlock;

@end

- (void)runAnimation
{    
    NSArray *views = @[view1, view2, view3];

    __weak LibraryViewController *weak_self = self;
    __block NSInteger currentView = 0;  
    __block NSUInteger colorNumber = 0;
    self.animationBlock = ^{
        [UIView animateWithDuration:1 animations:^{
            if (colorNumber == 0){
                [views[currentView] setBackgroundColor:[UIColor colorWithRed:1 green:0 blue:0 alpha:1]];
            }
            else if (colorNumber == 1){
                [views[currentView] setBackgroundColor:[UIColor colorWithRed:0 green:1 blue:0 alpha:1]];
            }
            else {
                [views[currentView] setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:1 alpha:1]];
            }

        } completion:^(BOOL finished) {
            currentView += 1;
            if (currentView == views.count){
                currentView = 0;                
                colorNumber += 1;
                if (colorNumber == views.count)
                    colorNumber = 0;
            }
            weak_self.animationBlock();
        }];
    };

    self.animationBlock();
}

你的意思是说你有3个滑块作为RGB组合,并想在滑块更改时更改视图颜色吗?不,我有一个自定义滑块,其中我正在滑块视图中添加小视图作为子视图。请参考屏幕截图。我想用动画将颜色从绿色改为清晰的颜色,反之亦然。你了解我的要求吗?它是一次性改变视图的颜色…没有延迟…我真正想要的是,第二个视图的颜色只有在第一个视图更改后才应该更改。虽然我将动画持续时间设置为1秒,但基本上立即调用完成块。emm,它不是wright,我对它进行了测试,它可以工作。