Zawsze uważałem, że Core Animation wykonuje animacje w tle. Kiedy uruchomić ten kod, moje interakcje UI są zablokowane do czasu zakończeniu animacji:Dlaczego -animateWithDuration: delay: options: animations: completion: blocking the UI?
[UIView animateWithDuration:4.5
delay:0
options:options
animations:^{
oldView.alpha = 0;
newView.alpha = 1;
}
completion:^(BOOL finished) {
if (finished) {
[oldView removeFromSuperview];
}
}];
Jak widać czas jest długi, więc jest to wyraźnie widoczne, że interakcje UI są blokowane podczas animacji.
Interakcja interfejsu użytkownika zaczyna być blokowana po rozpoczęciu animacji i kończy się blokować po zakończeniu animacji.
Czy istnieje sposób jednoczesnego uruchamiania animacji UIView, aby interakcje interfejsu użytkownika nie były blokowane?
EDIT wyjaśnienie: wiem, że interfejs użytkownika jest zablokowane, bo nie może wchodzić w interakcje z żadnego sterowania na ekranie, dlaczego ta animacja jest uruchomiony. Te inne elementy sterujące nie są powiązane z tym, co jest animowane i nie znajdują się w tej samej gałęzi w hierarchii widoku. Cały interfejs jest blokowany po uruchomieniu animacji. Kiedy ustawię go na 10 sekund, interfejs użytkownika zostanie zablokowany na 10 sekund podczas animacji. Przetestowane z iOS 4.2 na iPhone 4.
Skąd wiadomo, że jest zablokowana? O ile widok ma zero alfa, wszystkie widoki za nim mają wyłączoną interakcję. – CodaFi
Zaktualizowano pytanie, wyjaśniając. –