У меня есть этот пользовательский переход, который сбрасывает контроллер корневого представления с пользовательским переходом.
class ResetRootViewControllerSegue: UIStoryboardSegue {
override func perform() {
let src = source
let dst = destination
src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
dst.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)
UIView.animate(withDuration: 0.25,
delay: 0.0,
options: .curveEaseInOut,
animations: {
dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
},
completion: { _ in
src.present(dst, animated: false, completion: {
UIApplication.shared.keyWindow?.rootViewController = dst
})
}
)
}
}
Root ViewController - это TabbarViewController, который инкапсулирует панели навигации в каждой вкладке.
Проблема.
Когда я выполняю этот код только в первой панели навигации, отображается. Названия других панелей навигации пусты.
Этот код без анимации тоже не работает
class ResetRootViewControllerSegue: UIStoryboardSegue {
override func perform() {
let src = source
let dst = destination
src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
dst.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)
src.present(dst, animated: false, completion: {
UIApplication.shared.keyWindow?.rootViewController = dst
})
}
}
Но когда я использую этот класс без анимации, все работает нормально.
class ResetRootViewControllerSegue: UIStoryboardSegue {
override func perform() {
let src = source
let dst = destination
UIApplication.shared.keyWindow?.rootViewController = dst
}
}
эта простая анимация тоже работает
class ResetRootViewControllerSegue: UIStoryboardSegue {
override func perform() {
let src = source
let dst = destination
UIApplication.shared.keyWindow?.rootViewController = dst
UIView.transition(with: (UIApplication.shared.delegate!).window!!,
duration: 4.0,
options: .transitionCrossDissolve,
animations: { UIApplication.shared.keyWindow?.rootViewController = dst },
completion: nil)
}
}
Любые идеи, как я могу реализовать мою собственную анимацию перехода?