UIView анимации с блоками Objective-C - PullRequest
7 голосов
/ 22 февраля 2011

Я играл с двумя различными способами создания UIView анимаций: начало / фиксация и блоки.

Я заметил, что beginAnimations:context: / commitAnimations способ делать вещи - это приятноасинхронный, поддерживая свободный интерфейс во время работы анимации.

Однако я также заметил, что способ animateWithDuration:animations:completion, кажется, блокирует пользовательский интерфейс, что делает его не отвечающим во время работы анимации.

Я думал, что одним из основных моментов использования блоков является легкое достижение асинхронного выполнения.Почему вариант блоков UIView анимарионов блокирует пользовательский интерфейс, а вариант начала / фиксации - нет?

Редактировать:

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

1 Ответ

16 голосов
/ 22 февраля 2011

Используете ли вы правильный UIView метод класса? Если вы используете +animateWithDuration:delay:options:animations:completion:, вы можете указать битовую маску опций. Один из возможных вариантов - UIViewAnimationOptionAllowUserInteraction, который звучит как то, что вы хотите.

...