Как у меня текст затухает в UILabel?

Сейчас у меня есть IBAction для кнопки, которая генерирует случайное число с каждым номером, назначенным для отображения текста в UILabel. Вместо того, чтобы просто появляться, я хотел бы, чтобы текст исчезал или любая другая интересная анимация была бы классной. Кто-нибудь знает простой способ сделать это?

Сейчас я просто использую

labelMain.text = @"my text";

Ответ 1

Следующий код даст вам эффект затухания на вашей метке.

 - (IBAction)buttonClicked:(UIButton *)sender
  {
    labelMain.alpha = 0;

    [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
    animations:^{ labelMain.alpha = 1;}
    completion:nil];
 }

Ответ 2

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

Использовать метод уровня класса UIView transitionWithView:duration:options:animations:completion, например:

NSTimeInterval duration = 0.5f;
[UIView transitionWithView:labelMain
                  duration:duration
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                  labelMain.text = @"new value";
                } completion:nil];

Это приведет к переходу от предыдущего значения labelMain.text к "новому значению".

Этот подход работает и с другими значениями представления, например, например, с изменением образа UIImageView.

Смотрите Документы Apple по теме.

Ответ 3

label.text = @"old text";
    [UIView animateWithDuration:0.4 animations:^{
        label.alpha = 0.0f;
    } completion:^(BOOL finished) {
        label.text = @"next text";
        [UIView animateWithDuration:0.4 animations:^{
            label.alpha = 1.0f;
        } completion:^(BOOL finished) {
            NSLog(@"finished transition");
        }];
    }];

Ответ 4

Попробуйте следующее:

[labelMain setAlpha:0];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[labelMain setAlpha:1];
[UIView commitAnimations];

Изменение длительности довольно просто - просто настройте значение 0.8 в коде.

Ответ 5

// fade out the current value
[UIView animateWithDuration:0.2
                      delay:0
                    options:0
                 animations:^{
                   labelMain.alpha = 0.0f;
                 }
                 completion:^(BOOL finished) {
                   // set the new value and fade in
                   labelMain.text = newValue;
                   [UIView animateWithDuration:0.2
                                         delay:0
                                       options:0
                                    animations:^{
                                      labelMain.alpha = 1.0f;
                                    }
                                    completion:nil];

                 }];

Ответ 6

Это будет выглядеть как перекрестная затухающая анимация

 [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut
        animations:^{
    labelMain.alpha = 0;

        [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
        animations:^{ labelMain.alpha = 1;}
        completion:nil];

    } completion:nil];