转换后子视图转换调整大小

SubView transition resizing after transition

我有一个容器视图控制器和子视图控制器(类似于 UITabViewController)。在一个子视图控制器的视图和另一个子视图控制器的视图之间转换时,我使用:

let oldView = // get reference to old view
let newView = // get reference to new view
UIView.transition(from: oldView!, to: newView!, duration: 0.3,
                  options: .transitionCrossDissolve, completion: nil)

这里的问题是 newView 的大小调整发生在过渡动画完成之后,这看起来很不雅观。

这种不良行为仅在首次加载新的子视图控制器时发生。看来viewDidLayoutSubviews这个方法是在transition之后才调用的

如何在转换之前而不是之后调整 newView 的大小。

提前致谢。

在您的 ViewController 覆盖 func viewWillTransition 所以它会是这样的

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    let oldView = // get reference to old view
let newView = // get reference to new view
UIView.transition(from: oldView!, to: newView!, duration: 0.3,
                  options: .transitionCrossDissolve, completion: nil)

}