Выполните UIActivityIndicatorView, в то время как основной поток занят

существует ли способ отобразить анимированную прялку, в то время как основной поток делает долгую операцию? Анимация обрабатывается тем же потоком, который создал UIActivityIndicatorView, правильно? Если так, могут представления, которые принадлежат нескольким потокам, находятся в той же иерархии представления?

Все остальное сбой, я не возражаю перемещать саму долгую операцию в фоновый поток, но затем я должен был бы заморозить UI так или иначе, в то время как это работает. То, что я не уверен, как сделать.

Править: "длинный" приблизительно 2 секунды на устройстве 1-го генерала.

5
задан Seva Alekseyev 6 March 2010 в 16:41
поделиться

2 ответа

Решение состоит в том, чтобы запустить анимацию по крайней мере на одну итерацию через цикл выполнения перед выполнением длительной операции. Например:

[activity startAnimating];
[self performSelector:@selector(lengthyOperation) withObject:nil afterDelay:0];

Не обязательно использовать метод performSelector, достаточно каким-то образом установить метод на выполнение позже, чтобы индикатор активности имел шанс начать анимацию до того, как вы будете заняты.

9
ответ дан 18 December 2019 в 11:55
поделиться

Правильный ответ определенно - переместить длительную операцию в фоновый поток и передать ее основному потоку, когда она будет завершена. Если вы не знаете, как это сделать, прочтите NSOperationQueue и NSInvocationOperation . Ваше приложение и ваши пользователи будут благодарить вас за минимальное время, необходимое для изучения.

6
ответ дан 18 December 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: