UILabel оживленно исчезает, не работает

69
4

Я пытаюсь создать введение в мое приложение, когда UILabels исчезает и исчезает. У меня есть две метки. Я хочу, чтобы первый затухал, оставался на экране в течение 4 секунд. Затем вторая метка должна затухать и оставаться на экране в течение 4 секунд. Затем он должен погасить обе метки.


У меня есть следующий код, но он ничего не делает, поскольку он переходит прямо в конечное состояние. У меня есть следующий метод в viewDidAppear(). Что я делаю неправильно?


-(void) animateLabels
{
[UIView beginAnimations:@"First Label Display" context:nil];
[UIView setAnimationDelay:4.0];
firstLabel.alpha = 1;
[UIView commitAnimations];

[UIView beginAnimations:@"Second Label Display" context:nil];
[UIView setAnimationDelay:6.0];
secondLabel.alpha = 1;
[UILabel commitAnimations];

[UIView beginAnimations:@"Hide Labels" context:nil];
[UIView setAnimationDelay:10.0];
secondLabel.alpha = 0;
firstLabel.alpha=0;
[UILabel commitAnimations];

}

спросил(а) 2020-04-03T23:22:02+03:00 5 месяцев, 4 недели назад
1
Решение
80

Используйте анимацию на основе блоков и объедините свои анимации. Итак, есть 3 шага. label1 fadesIn, Label2 fadesIn, наконец, Label3 fadesIn. Я написал код ниже для выцветания в label1 и label2. Затухание просто. Я думаю, вы можете заполнить все остальное. Прямо отсюда...


Попробуйте это -

[UIView animateWithDuration:1.0 
delay:4
options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
animations:^(void)
{
[firstLabel setAlpha:1.0];
}
completion:^(BOOL finished)
{
if(finished)
{
[UIView animateWithDuration:1.0
delay:4.0
options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
animations:^(void)
{
[secondLabel setAlpha:1.0];
}
completion:^(BOOL finished)
{
if(finished)
{
//put another block her to hide both the labels.
}
}];
}
}];

ответил(а) 2020-04-03T23:32:28.246545+03:00 5 месяцев, 4 недели назад
58

Я предлагаю переписать это с помощью блоков. Сначала animateWithDuration:animations:completion:, а затем вложенный animateWithDuration:delay:options:animations:completion:. Это намного более гибко, и в наши дни нет необходимости работать в системах с предварительными блоками.

Кроме того, ваша первая анимация, как написано, не будет запускаться в течение 4 секунд.

ответил(а) 2020-04-03T23:22:02+03:00 5 месяцев, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема