В настоящее время у меня есть контроллер представления, представляющий другой контроллер вида. То, что я пытаюсь сделать, - это воссоздать анимацию по умолчанию, используемую при нажатии контроллера вида.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 ...
Почему вы не используете переход по умолчанию? – Jeremiah