Как Получить Задержку При Изменении Текста UILabel


У меня есть 3 пустых UILabels на экране, и я изменяю их текст программно. Я хочу иметь задержку в 1,5 и 2 секунды... Например, первый выскакивает, задержка 1 секунда, второй выскакивает, задержка 1,5 секунды, третий выскакивает, задержка 2 секунды.

Я уже написал строки кода, чтобы изменить текст, но все они появляются одновременно. sleep(); не работает должным образом.

load1.text = @"Reading fingerprint...";

load2.text = @"Fingerprint read...";

load3.text = @"Determining result...";
Это код, который я использую для изменения текста. Это происходит, когда я нажимаю a кнопка.

Заранее благодарю...

1   2  

1 ответ:

Существует несколько подходов. Один из них должен использовать dispatch_after:

// Show first now
load1.text = @"Reading fingerprint...";

// Show second after 1 second
int64_t delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    load2.text = @"Fingerprint read...";
});

// Show third after 2.5 seconds
delayInSeconds = 2.5;
popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    load3.text = @"Determining result...";
});

Конечно, кажется, что было бы лучше показывать обновленные метки после того, как каждый из этих шагов фактически завершен, а не искусственные задержки. Разве не так?