Почему -animateWithDuration:delay:options:animations:completion: блокирует пользовательский интерфейс?

Я всегда думал, что Core Animation выполняет анимацию в фоновом режиме. Когда я запускаю этот код, мои взаимодействия с пользовательским интерфейсом блокируются до тех пор, пока анимация не завершится:

[UIView animateWithDuration:4.5 
                      delay:0 
                    options:options 
                 animations:^{
                    oldView.alpha = 0;
                    newView.alpha = 1;
                 }  
                 completion:^(BOOL finished) {
                    if (finished) {
                        [oldView removeFromSuperview];
                    }
                 }];

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

Взаимодействие с пользовательским интерфейсом начинает блокироваться, когда начинается анимация, и блокируется, когда анимация завершается.

Есть ли способ запустить анимацию UIView одновременно, чтобы взаимодействие с пользовательским интерфейсом не блокировалось?

РЕДАКТИРОВАТЬ, чтобы уточнить:Я знаю, что пользовательский интерфейс заблокирован, потому что я не могу взаимодействовать с любымэлементом управления на экране, почему эта анимация работает. Эти другие элементы управления не связаны с тем, что анимируется, и не находятся в той же ветви в иерархии представлений. Весь пользовательский интерфейс блокируется при запуске этой анимации. Когда я устанавливаю его на 10 секунд, пользовательский интерфейс блокируется на 10 секунд, пока выполняется анимация. Протестировано с iOS 4.2 на iPhone 4.

7
задан Proud Member 1 April 2012 в 19:22
поделиться