Можно ли использовать iOS 7 UiviewController переходы (интегрирующие специально) с контроллерами просмотра детей?

StackOverflow https://stackoverflow.com//questions/22003967

Вопрос

Существует много учебных пособий вокруг использования новых API интерфейса IOS 7 UIViewController и отличного нового интерактивного перехода API. Тем не менее, ни один из них, похоже, не рекомендует добавлять и удалять контроллеры дочерних контроллеров ребенка, несмотря на то, что в видео WWDC 2013 на пользовательском UiviewController переходит на переходы Apple Contripee, показывает, что я бы представлял, чтобы контроллер представления ребенка, представленным с пользовательским переходом:

Введите описание изображения здесь

(Я предполагаю, что это как контроллер просмотра отображается поверх другого, казалось бы, я не думаю, что вы можете перейти к новому UiviewController, сохраняя их, сохраняя позади него ...)

Можно ли добиться такой вещи с контроллерами просмотра детей?

В моей конкретной ситуации я добавляю галерею изображений UIPageViewController в качестве контроллера по просмотру детей, но вы все равно можете увидеть контроллер представления, к которому он был добавлен, если изображение UIPageViewController не занимает полный экран. Я также добавил возможность скольжения изображений выключить экран (похоже на многозадачаю в iOS 7), и я бы понравилось, чтобы это был интерактивный контроллер просмотра POP.

Есть ли уравнения для такой вещи? Это даже возможно? Будет ли это лучше сделать с presentViewController как-то, что позволило бы мне просмотреть контроллер просмотра под?

Это было полезно?

Решение

Если вы снова смотрите видео, вы заметите в 12:15, он ссылается на поддержанный стиль презентации GeneracodicCode. Этот стиль презентации означает, что представление «от» просмотра контроллера не удаляется из иерархии просмотра, что позволяет вам создавать свои собственные формы. Так что в вашем случае вы сделаете следующее:

//insert code where you want the presentation to begin

UIPageViewController *pageVC = [[UIPageViewController alloc] init];
pageVC.modalPresentationStyle = UIModalPresentationCustom;
id<UIViewControllerTransitioningDelegate> transitionDelegate = [self transitionDelegate];
[self presentViewController:pageVC animated:YES completion:nil];
.

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

Вы можете найти этот учебник полезным - http://www.teehanlax.com/ Блог / Custom-UiviewController-переходы /

Лучше еще, кто-то пошел на репликацию образца сеанса 218 на Github - https://github.com/soleares / Solpresentingfun

Счастливый кодирование

Другие советы

Похоже, вы хотите сделать пользовательский переход с контейнером UIViewController. Это хитровое предложение, чем типичные переходы, потому что вам нужно обеспечить объект, который реализует GeneracodicCode самостоятельно.

Несмотря на все необходимые методы, этот протокол не так сложно реализовать. Большинство методов являются очевидными. Поскольку вы хотите интерактивный переход, вы столкнетесь с некоторыми препятствиями, которые я еще не сталкивался. Вот несколько советов, которые я недавно обнаружил при внедрении этого протокола:

  1. Не бойся определить ваши собственные ключи для: UIViewControllerContextTransitioning. Я обнаружил, что мне нужно ссылку на контроллер родительского представления в моем объекте аниматора. Самое чистое решение определяло другой ключ для передачи в этот метод. Это работает очень хорошо, если объект, который реализует этот протокол, также является контроллером родительского представления.

  2. Отправьте свой аниматор, вызывая viewControllerForKey: вместо того, чтобы создать свой аниматор. Еще раз, это было похоже на более чистый подход, поскольку он работает в пределах протоколов. Это метод, который в противном случае был бы назван как часть генеракодицетагкода.

  3. Используйте animationControllerForPresentedController:presentingController:sourceController. Поскольку вы специально говорите о контроллерах по просмотру детей, вы не делаете модальную презентацию.

  4. Добавьте вызовы сопровождения контроллера просмотра, например, Генеракодицетагкод в вашем аниматоре. Здесь вы будете добавлять свой новый контроллер представления на иерархию контроллера просмотра.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top