2013-09-18 4 views
0

У меня есть собственный пользовательский контроллер представления контейнера, целью которого является обмен между двумя разными контроллерами представлений, которые управляют формой с текстовыми полями. Мы будем называть эти FormVC1 и FormVC2. Оба представления этих контроллеров управляются XIB.Анимация просмотра контроллера детского просмотра во время перехода

Я могу успешно переключаться между FormVC1 и FormVC2 с помощью:

transitionFromViewController:toViewController:duration:options:animations:completion: при прохождении UIViewAnimationOptionTransitionCrossDissolve для options аргумента.

Теперь я хочу немного подсластить переход, а когда FormVC1 уволен, я хочу, чтобы отдельные текстовые поля уходили влево (по одному), а когда FormVC2 представляется, я хочу, чтобы отдельные текстовые поля, чтобы летать справа, по одному за раз.

Я немного смущен относительно того, как установить все это, и где именно разместить конкретный код анимации текстового поля. Я помещаю это в блок анимации внутри Мастера? Я помещаю его в каждый обратный вызов формы FormVC?

ответ

0

У вас есть несколько вариантов, поэтому выбрать тот, который лучше работает для вас:

1) Сделать контроллер вид контейнера содержать Scrollview, с прокруткой отключена, и отключить полосы прокрутки. Задайте две формы vc как дочерние vc в контейнере и добавьте представления в прокрутку рядом друг с другом, так что будет видно только одно. В соответствующее время покажите следующую форму, установив смещение содержимого прокрутки в анимированном наборе на YES.

2) Еще лучше (более легко расширяемый, чтобы добавить произвольное количество форм), используйте UICollectionView вместо основного прокрутки, установите для него горизонтальную линейную компоновку, сделайте пользовательскую ячейку для хранения вашей формы vc класса (отключите прокрутки и полосы прокрутки), затем, чтобы показать следующую форму, scrollToItemAtIndexPath :: должен сделать трюк.

3) Самый простой, возможно, достаточно хороший: сделайте свой контейнер навигационным контроллером и просто нажмите форму vc с переходом по умолчанию.

Все эти решения предполагают, что ваша форма vc - это только те элементы управления, которые вы хотите анимировать, а основной вид имеет прозрачный фон.

+0

спасибо, но у меня уже есть все формы, заменяющие анимацию. теперь вместо просто CrossDissolving я хочу, чтобы отдельные текстовые поля вылетали и снимались соответственно. – djibouti33

+0

Вы говорите, что хотите, чтобы крест растворялся, а другая анимация? В этом случае поместите все элементы управления в представление контейнера, которое при вызове transitionFromView ... вы также выполняете анимацию [UIView animate ...], где вы устанавливаете рамку контейнера слева от видимой области. Сделайте то же самое для отображаемого представления, но у вас есть начальная позиция справа и настройте их, где они должны быть. – Matt

0

В блоке animationstransitionFromViewController:toViewController:… изменить кадры элементов, которые хотите анимировать. Чтобы заставить его лететь влево, вычесть что-то вроде 200 из frame.origin.x. Чтобы заставить их летать справа, начинайте с максимума x (возможно, 500) и анимируйте его в центр.

Чтобы анимировать их последовательно, вы можете использовать разные значения x для каждого элемента. Для чего-то более сложного, используйте animateWithDuration:delay:options:animations:completion: и настройте следующую анимацию в блоке прежнего completion. Вы использовали бы это вместо transitionFromViewController:toViewController:….

+0

ОК. поэтому, если я не называю 'transitionFromVC ...', тогда я бы связал кучу блоков анимации вместе и добавлю/удаляю subviews вручную, правильно?если я это сделаю, мне придется затем вручную вызвать 'beginAppearanceTransition' и' endAppearanceTransition', правильно? если я уйду, вы могли бы предоставить образец кода? – djibouti33

+0

Да, «transitionFromVC» - это просто хороший способ добавления/удаления представлений VC, так что это часть, которую вам нужно будет сделать вручную. Вызовы 'appearanceTransition' - это только если вы вернули' NO' для вещей 'shouldForwardAppearance'. Вы им не нужны. –

Смежные вопросы