Контейнерный вид, исчезающий при полном переходе:

Я использую настраиваемые переходы контроллера, UIViewControllerAnimatedTransitioning , чтобы представить и отклонить контроллер вида.

Представляющая анимация работает отлично, но когда я запускаю анимацию увольнения, как только я вызываю completeTransition: containerView удаляется.

Я не уверен, что происходит, вот код перехода:

 - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext { UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIView *containerView = [transitionContext containerView]; containerView.backgroundColor = [UIColor blackColor]; if (self.reverse) { [containerView addSubview:toViewController.view]; [containerView addSubview:fromViewController.view]; } else { [containerView addSubview:fromViewController.view]; [containerView addSubview:toViewController.view]; } if (! self.reverse) { // Forward toViewController.view.frame = CGRectMake(-containerView.frame.size.width, 0, containerView.frame.size.width, containerView.frame.size.height); } else { fromViewController.view.frame = CGRectMake(0, 0, containerView.frame.size.width, containerView.frame.size.height); } [UIView animateWithDuration:[self transitionDuration:transitionContext] delay:0 usingSpringWithDamping:0.75f initialSpringVelocity:1.0f options:UIViewAnimationOptionCurveLinear animations:^{ if (self.reverse) { fromViewController.view.frame = CGRectMake(-containerView.frame.size.width, 0, containerView.frame.size.width, containerView.frame.size.height); fromViewController.view.layer.opacity = 0.f; toViewController.view.layer.opacity = 1.f; } else { toViewController.view.frame = CGRectMake(0, 0, containerView.frame.size.width, containerView.frame.size.height); toViewController.view.layer.opacity = 1.f; fromViewController.view.layer.opacity = 0.3f; } } completion:^(BOOL finished) { [transitionContext completeTransition:finished]; }]; } - (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext { if (self.reverse) { return 0.45; } else { return 0.35; } } 

Как я могу предотвратить исчезновение моего toViewController если для параметра .reverse установлено значение YES ?

Обновление. Вот как я представляю контроллер представления:

 SecondaryViewController *vc = [[SecondaryViewController alloc] init]; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:vc]; navigationController.modalPresentationStyle = UIModalPresentationCustom; navigationController.transitioningDelegate = self; [self presentViewController:navigationController animated:YES completion:nil]; 

Вид контейнера, исчезающий при увольнении, является правильным поведением. Ваша ошибка заключается в добавлении fromView к нему.

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

Таким образом, при представлении добавьте только представление toView в представление контейнера. При увольнении не добавляйте ничего в контейнер. Это так просто.

  • Панель UINavigationController охватывает содержимое своего uiviewcontroller
  • Загружать различные контроллеры представлений в UIView (как iFrame для Xcode)
  • В чем разница между UIViewController и UITableViewController
  • должны ли uiviewcontrollers всегда быть частью иерархии viewcontroller?
  • Как использовать автоматический макет с контейнерными переходами?
  • segue: странность диспетчера задач назначения
  • Каков правильный способ просмотра наложения всех других viewControllers в приложении?
  • Разрешить MPMoviePlayerViewController воспроизводиться в ландшафтном режиме, сохраняя ориентацию представления контроллера представления
  • Есть ли у вас какие-либо методы перехода с CameraRoll на новый контроллер представления?
  • UIDocumentMenuViewController отклоняет представление контроллера представления
  • Почему viewWillTransitionToSize имеет неправильный размер?
  • Interesting Posts

    UISegmentedControl с значком или выделение

    Геокодирование Множественные местоположения – Знание, когда были выбраны «все» блоки завершения

    Проблема, когда я пытаюсь нарисовать градиент в быстрой

    постоянное увеличение памяти приложения (IOAccelResource)

    Состояние выделенного UIButton не отображается при нажатии на выбранную UIButton

    Ошибка AppConnect: приложение AppConnect невозможно создать напрямую

    Наблюдение за изменением UIView

    URL-адрес Facebook SLComposeViewController отображается в теле, если оба URL и изображение присутствуют

    Есть ли какой-либо эквивалент для Android <meta name = 'viewport' content = 'target-densitydpi = device-dpi'> для Safari на iPhone?

    Отказ приложения для iCloud Backup Flagging

    Как выбрать один из многократных виджетов для домашнего экрана с помощью 3d touch?

    Как предварительно загрузить AVPlayerItem

    UITableViewController не показывает элементы панели инструментов?

    Объявление ios boolean var

    GL_TRIANGLES или GL_TRIANGLE_STRIP на iOS?

    Давайте будем гением компьютера.