Как у меня текст затухает в 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];