Я всегда думал, что 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.