2014-10-17 2 views
-3

Этот вопрос задан как минимум столько раз, сколько я искал для ответа, но никогда не был удовлетворен. У меня есть представление с 52 subviews, представляющими колоду карт. Карты появляются в центре экрана, разбиваются на два стопки карточек и затем сливаются вместе как перетасованная колода.IOS, Swift, анимация цепочка, ожидающая основная нить до тех пор, пока цепочка не завершится

Если я звоню self.standardShuffle() от viewDidAppear(), после создания экземпляров изображений с карточками, он работает нормально.

Но если я звоню self.standardShuffle() 2 раза подряд, второй вызов ловит первую анимацию в полете, а анимация разрушается. Должен быть способ заблокировать вызывающий поток, пока цепь анимации не завершится. Таймеры становятся слишком громоздкими, и я не могу поместить весь свой код внутри блоков анимации (и это все равно не работает).

У кого-нибудь есть реальный ответ? Пожалуйста.

+0

Можете ли вы опубликовать пример кода, показывающий, с какими ограничениями вы хотите работать? Обычно я использовал функции UIView.animate ... с опцией BeginFromCurrentState. –

ответ

5

Там должен быть способ заблокировать вызывающий поток

Нет есть нет. Никогда блок. Никогда.

Если вы считаете, что ответы, которые вы видели, не являются удовлетворительными, вы не читали их внимательно. Прочитайте их и верьте им. Вы можете легко (и по-разному) организовать обратный вызов после первой анимации; , что - это момент, чтобы начать вторую анимацию. Или создайте единую сгруппированную анимацию, которая последовательно выполняет две анимации.

Это ваш выбор - только вариантов. Если вы обнаружите, что вам сложно согласовать код, это потому, что вы неправильно создали свой код. Искайте его. Использование рамки, не борьба это.