Domanda

c'è un modo per visualizzare il filatoio animata mentre il filo principale fa un'operazione lunga? L'animazione è gestita dallo stesso thread che ha creato l'UIActivityIndicatorView, giusto? Se è così, può viste che appartengono a diverse discussioni sedere nella stessa gerarchia della vista?

Tutto il resto difetto, non mi dispiace lo spostamento di una lunga operazione di se stesso in un thread in background, ma poi avrei dovuto bloccare l'interfaccia utente in qualche modo mentre è in esecuzione. Che io non sono sicuro di come fare.

EDIT:. "Lunga" è di circa 2 sec su un dispositivo prima generazione

È stato utile?

Soluzione

La soluzione è quella di iniziare l'animazione almeno un'iterazione del ciclo di esecuzione prima di eseguire il funzionamento continuo. Ad esempio:

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

Non c'è bisogno di utilizzare il metodo performSelector, solo un modo per impostare il metodo per eseguire dopo in modo che l'indicatore di attività ha la possibilità di iniziare l'animazione prima di darsi da fare.

Altri suggerimenti

La risposta giusta è sicuramente quello di spostare l'operazione lengthly ad un thread in background e lo hanno comunicato alla thread principale quando è fatto. Se non sai come fare questo, continuate a leggere e NSOperationQueue NSInvocationOperation. La tua app e gli utenti vi ringrazieranno per il tempo minimo che ci vorrà per imparare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top