Я сделал это один раз, прежде чем достойные результаты , Вам, вероятно, придется настроить его по своему усмотрению.
Первый шаг - создать изображение градиента в соответствии с тем, как вы хотите, чтобы текст затухал. Если ваш цвет текста черный, вы можете попробовать это.
- (UIImage *)labelTextGradientImage
{
CAGradientLayer *l = [CAGradientLayer layer];
l.frame = self.label.bounds;
l.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:0] CGColor], (id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:1] CGColor], nil];
l.endPoint = CGPointMake(0.0, 0.0f);
l.startPoint = CGPointMake(1.0f, 0.0f);
UIGraphicsBeginImageContext(self.label.frame.size);
[l renderInContext:UIGraphicsGetCurrentContext()];
UIImage *textGradientImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return textGradientImage;
}
Этот код создает черное изображение, которое должно исчезать слева направо.
Затем, когда вы создаете ярлык, вам нужно установить его цвет текста на основе шаблона, сделанного из только что созданного изображения.
self.label.alpha = 0;
self.label.textColor = [UIColor colorWithPatternImage:[self labelTextGradientImage]];
Предполагая, что работает, последний шаг, чтобы оживить метку в поле зрения и изменить цвет текста в то время как это происходит.
[UIView transitionWithView:self.label duration:0.2 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
self.label.textColor = [UIColor blackColor];
self.label.alpha = 1;
} completion:^(BOOL finished) {
}];
анимация код немного напуганный, потому что свойство TextColor в UILabel по-видимому, не будет анимируемым с UIViewAnimation.