Изменить цвет 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 отдельно.