Изменить цвет CALayer во время анимации

ПОДХОД 1

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeStart"];
 [CATransaction begin];
    {
        [CATransaction setAnimationDuration:15];//Dynamic Duration
        [CATransaction setCompletionBlock:^{

        }];

        animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
        animation.autoreverses = NO;
        animation.removedOnCompletion = NO;
        animation.fromValue = @0;
        animation.toValue = @1;
        animation.timeOffset = 0;
        animation.fillMode = kCAFillModeForwards;
        [self.pathLayer addAnimation:animation forKey:animationKey];

    }
    [CATransaction commit];

Я добавил CAShapeLayer (pathLayer) в свое представление и хочу, чтобы оно анимировалось вокруг представления с эффектом обводки, приведенный выше код выполняет свою работу, но моя проблема заключается в изменении цвета в 3 равных пропорциях. Итак, я предполагаю повторить приведенный выше код 3 раза и изменить следующие строки в соответствующем порядке.

для 1-го

    animation.fromValue = @0;
    animation.toValue = @(1/3);
    animation.timeOffset = 0;

для 2-го

    animation.fromValue = @(1/3);
    animation.toValue = @(2/3);
    animation.timeOffset = 0;// I don't know how to exactly set this  active local 
time since the duration which is currently 15 is dynamic can be 30 or 10.

для 3-го

    animation.fromValue = @(2/3);
    animation.toValue = @(3);
    animation.timeOffset = 0;// Active local time- Not sure how and which value to set 

ПОДХОД 2

Вместо 3-х транзакций с методом смещения давайте начнем 2-ю транзакцию, когда 1-й завершится, и 3-й, когда 2-й Но часть времени, затрачиваемая на запуск новой анимации после ее завершения, становится заметной задержкой / рывком.

ПОДХОД 3

Подкласс CAShapeLayer

Выполняя SubClass, метод drawInContext вызывается только один раз, и, если какое-то дополнительное свойство добавляется и изменяется, метод drawInContext вызывается повторно, и таким образом цвет слоя может быть изменен после определенного периода времени выполнения. Но переопределение метода drawInContext нене служит цели.

Какие-либо предложения ? Я нея не хочу реализовывать NSTimer отдельно.

Ответы на вопрос(1)

Ваш ответ на вопрос