Ho un codice pesante che viene eseguito per circa 0,2 secondi.Indicatore attività non visualizzato
Ho impostato l'indicatore di attività come questo; tuttavia, non viene visualizzato, ma piuttosto l'intero schermo si blocca per circa 0,2 secondi fino al termine del codice.
func heavyWork() {
self.actvityIndicator.startAnimating()
...
// heavy loop codes here
...
self.activityIndicator.stopAnimating()
}
È questo il modo corretto di utilizzare l'indicatore di attività?
Quando io commento
// self.activityIndicator.stopAnimating()
l'indicatore di attività si presenta e vi rimane - i codici sono impostati a destra.
Ma l'interfaccia utente non sembra essere aggiornata al momento giusto.
Come ho detto, lo schermo si blocca solo senza mostrare l'indicatore di attività fino a quando non viene eseguito il codice pesante.
è la vostra 'anello Codice delle pesanti in esecuzione su un thread in background? Il codice del ciclo pesante bloccherà l'interfaccia utente dalla visualizzazione dell'indicatore di attività. Inoltre, se si chiama 'heavyWork' su un thread in background, l'interfaccia utente non dovrebbe aggiornarsi poiché non si trova sul thread principale. – sbarow
se sei su un thread in background, non puoi modificare nulla sull'interfaccia utente; se sei sul thread principale, allora non è il massimo per fare il lavoro pesante. – holex