转换后的子视图过渡大小调整
问题描述:
我有一个容器视图控制器和子视图控制器(类似于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方法仅在转换后调用。
如何在转换之前获取新视图的大小,而不是之后。
在此先感谢。
答
在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
感谢您的警告,我应该提到这一点。 –
本身正常工作与自动布局的转移。我刚刚测试过。您需要展示更多代码 - 特别是您添加和设置子视图控制器的代码。 – Mischa
如何调整(新)子视图控制器的视图以匹配容器的大小? – Mischa
您是否尝试覆盖'func viewWillTransition(调整大小:CGSize,协调器:UIViewControllerTransitionCoordinator)' 并在其中添加您的转换? –