У меня есть два контроллера представления, A и B. Я могу перейти от A к B через переход, и я реализовал анимацию постепенного изменения в переходе, реализовав класс UISegue. Однако проблемы возникают во время вращения устройства и раскручивания (от B до A, когда вращение произошло, пока в B).
Проблема заключается в том, что представление для представления (представление A) имеет неправильный макет. Вызов функций, таких как setNeedsUpdateConstraints()
или layoutSubviews()
или аналогичных функций до того, как переходы не работают. Снимок экрана описывает ситуацию, когда A открывается в альбомной ориентации, а затем выполняется переход к B. В положении B устройство поворачивается обратно в портретное положение и разматывается в A.
Код Swift для segues:
class SegueFadeOut: UIStoryboardSegue {
override func perform() {
UIView.transition(from: source.view, to: destination.view, duration: 5.5, options: [.transitionCrossDissolve]) { (success) in
self.destination.dismiss(animated: false, completion: nil)
}
}
}
class SegueFadeIn: UIStoryboardSegue {
override func perform() {
let toViewController = self.destination
let fromViewController = self.source
let containerView = fromViewController.view.superview
toViewController.view.alpha = 0.0
containerView?.addSubview(toViewController.view)
UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseInOut, animations: {
toViewController.view.alpha = 1.0
}, completion: { success in
fromViewController.present(toViewController, animated: false, completion: nil)
})
}
}
Есть какие-нибудь подсказки о том, как или где реализовать функцию, которая исправит эту проблему с макетом? Спасибо!