Промяна на цветовете на подизгледите с анимация?

Имам UISlider и успешно добавих някои подизгледи в следата на плъзгача. Искам да сменям цвета на подизгледите един по един с анимация. въведете описание на изображението тук


person jailani    schedule 29.10.2014    source източник
comment
имаш предвид, че имаш 3 плъзгача като RGB комбинация и искаш да промениш цвета на изгледа, когато плъзгачът се промени?   -  person Fahim Parkar    schedule 29.10.2014
comment
Не, имам персонализиран плъзгач, в който добавям малки изгледи като подизглед в изгледа на плъзгача.. моля, вижте екранната снимка. Искам да променя цвета от зелен на ясен цвят и обратно с анимация   -  person jailani    schedule 29.10.2014


Отговори (1)


Този пример може да е полезен за вас, съжалявам, че не ви разбирам напълно от първия път:

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();
}
person mityaika07    schedule 29.10.2014
comment
Съжалявам, разбрахте ли изискването ми? - person jailani; 29.10.2014
comment
Той променя цветовете на изгледите в един кадър...Няма забавяне...Това, което всъщност искам е, цветът на втория изглед трябва да се промени само след промяна на първия изглед - person jailani; 29.10.2014
comment
По принцип блокът за завършване се извика веднага, въпреки че зададох продължителността на анимацията да е 1 секунда. - person jailani; 29.10.2014
comment
емм, не е наред, пробвах го и работи. - person mityaika07; 29.10.2014