2017-02-08 5 views
3

Apple обсуждает, как иметь контроллер контроллера контейнера между двумя контроллерами детского вида в этом document. Я хотел бы анимировать простой вертикальный слайд толка, идентичный UIModalTransitionStyleCoverVertical в UIModalTransitionStyle. Однако transitionFromViewController позволяет использовать только UIViewAnimationOptions, а не стили перехода. Итак, как можно оживить скользящий просмотр?iOS: вид контейнера - оживляющий переход при изменении контроллеров детского вида

Странно, что для перехода между контроллерами детского вида вы не можете назвать простой метод push, аналогичный UINavigationController, чтобы анимировать переход.

ответ

4

Загрузить вид ребенка, установить раму с источником.y под нижним экраном. После изменения в 0 в блок анимации. Пример:

enum Animation { 
    case LeftToRight 
    case RightToLeft 
} 

func animationForLoad(fromvc: UIViewController, tovc: UIViewController, with animation: Animation) { 

     self.addChildViewController(tovc) 
     self.container.addSubview(tovc.view) 
     self.currentVC = tovc 

     var endOriginx: CGFloat = 0 

     if animation == Animation.LeftToRight { 
      tovc.view.frame.origin.x = -self.view.bounds.width 
      endOriginx += fromvc.view.frame.width 
     } else { 
      tovc.view.frame.origin.x = self.view.bounds.width 
      endOriginx -= fromvc.view.frame.width 
     } 

     self.transition(from: fromvc, to: tovc, duration: 0.35, options: UIViewAnimationOptions.beginFromCurrentState, animations: { 
      tovc.view.frame = fromvc.view.frame 
      fromvc.view.frame.origin.x = endOriginx 
      }, completion: { (finish) in 
       tovc.didMove(toParentViewController: self) 
       fromvc.view.removeFromSuperview() 
       fromvc.removeFromParentViewController()    
     })   
    } 

Над кодом переход между 2 детским видом с push и поп-горизонтальной анимацией.

+0

Требуется иметь общий контроллер базового вида. Это дает мне ошибку (сбой), поскольку у меня нет общих контроллеров базового представления. – Hemang