Анимация свойства foregroundColor объекта CATextLayer - PullRequest
5 голосов
/ 27 февраля 2011

Я хочу анимировать изменение цвета текста (foregroundColor) CATextLayer на iPhone. Согласно документации, неявная анимация свойства недоступна в OSX 10.6, но iOS не упоминается. В результате я только что предположил, что анимация должна быть явной, чтобы она работала на iOS.

Я изменил класс резервного слоя с помощью +(class)layerClass и установил начальное значение для свойства в методе UIView init. Текст отображается очень хорошо, вместе со всеми примененными мною свойствами (тень, шрифт и т. Д.), Но анимация не оказывает никакого влияния.

Ниже приведен мой метод анимации, который я вызываю из метода наблюдения KVO, чтобы представление предупреждало пользователя об изменении наблюдаемого свойства.

-(void) animateTextChange{
    animation = [CABasicAnimation animationWithKeyPath:@"foregroundColor"];

    [animation setFromValue:[[UIColor blackColor] CGColor]];

    [animation setToValue:[[UIColor whiteColor] CGColor]];

    [animation setDuration:2.0f];

    [[self layer] addAnimation:animation
                        forKey:@"foregroundColor"
 ];
}

Спасибо как всегда.

1 Ответ

3 голосов
/ 18 мая 2011

Это единственный способ, которым мне удалось это сделать:

       [CATransaction begin];
       [CATransaction setAnimationDuration:.5];
       [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
       [CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        yellowWord.foregroundColor =[UIColor redColor].CGColor;
        [CATransaction commit];

Надеюсь, это кому-нибудь поможет

...