转换后的子视图过渡大小调整

问题描述:

我有一个容器视图控制器和子视图控制器(类似于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方法仅在转换后调用。

如何在转换之前获取新视图的大小,而不是之后。

在此先感谢。

+0

本身正常工作与自动布局的转移。我刚刚测试过。您需要展示更多代码 - 特别是您添加和设置子视图控制器的代码。 – Mischa

+0

如何调整(新)子视图控制器的视图以匹配容器的大小? – Mischa

+0

您是否尝试覆盖'func viewWillTransition(调整大小:CGSize,协调器:UIViewControllerTransitionCoordinator)' 并在其中添加您的转换? –

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) 

} 
+1

不要忘记,如果屏幕旋转到横向或纵向模式,也会调用此方法。 –

+0

感谢您的警告,我应该提到这一点。 –