2016-02-24 4 views
0

В настоящее время у меня есть контроллер представления, представляющий другой контроллер вида. То, что я пытаюсь сделать, - это воссоздать анимацию по умолчанию, используемую при нажатии контроллера вида.iOS, представляющий контроллер представления, анимированный как «Push» (правая левая анимация)

Мой текущий подход:

FirstViewController:

@IBAction private func push(sender: AnyObject) { 
    let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SecondViewController") 

    let transition = CATransition() 
    transition.duration = 0.5 
    transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
    transition.type = kCATransitionPush 
    transition.subtype = kCATransitionFromRight 

    view.window?.layer.addAnimation(transition, forKey: kCATransition) 

    presentViewController(vc, animated: false, completion: nil) 
} 

SecondViewController:

@IBAction private func pop(sender: AnyObject) { 

    let transition = CATransition() 
    transition.duration = 0.5 
    transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
    transition.type = kCATransitionPush 
    transition.subtype = kCATransitionFromLeft 

    view.window?.layer.addAnimation(transition, forKey: kCATransition) 

    dismissViewControllerAnimated(false, completion: nil) 
} 

Это почти работает, но у меня есть странное поведение, я имею вид черный экран/вспышка при переходе между контроллерами. Я уже пытался изменить window.backgroundColor, но это не проблема.

Заранее спасибо 0_0 ...

+0

Почему вы не используете переход по умолчанию? – Jeremiah

ответ

1

беда в том, что только то, что вы делаете не так, как настроить анимацию для подарка/отклонять переход. Apple предоставила вам четкий, хорошо налаженный, официальный способ сделать это, и то, что вы делаете, не так. Вам необходимо предоставить представленный контроллер представления transitioningDelegate вместе с реализациями animationControllerForPresentedController: и animationControllerForDismissedController: и реализовать протокол UIViewControllerAnimatedTransitioning, возможно, вместе с пользовательским подклассом UIPresentationController.