如果我离开并返回到视图控制器,为什么 viewWillTransition(to size:...) 不起作用?

Why is viewWillTransition(to size:...) not working if I navigate away from and back to the View Controller?

我有一个名为 myViewUIView 子类,它应该在设备方向改变时重新配置。我在 UIViewController 中使用 viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) 方法来调用重新配置视图的 setUp() 方法。我遇到的问题是它在我第一次加载该特定视图控制器时工作,但如果我离开然后返回它,代码将不再工作。怎么了?代码如下:

@IBOutlet weak var myView: UIView!
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    self.myView.setUp()
}

如果我改用已弃用的方法 didRotate(from fromInterfaceOrientation: UIInterfaceOrientation),代码每次都能正常工作。

由于每次调用 self.myView.setUp(),我怀疑视图由于引用错误而未更新。

尝试让它变得强大,如果是引用错误的情况,那么这应该可以解决它

@IBOutlet var myView: UIView!

所以,我仍然没有弄清楚为什么会出现最初的问题,但我确实找到了解决方法。通常可以在 viewDidLayoutSubviews() 方法中根据 UIScreen.main.bounds 计算方向,但我有一个以屏幕刷新率触发的计时器,所以该方法被调用 60 times/second,而我的 myView.setUp() 方法对处理器的要求太高,无法使用。所以,我给了我的 UIViewController 一个 orientation 属性 和一个 setter 观察者,属性 在 viewDidLayoutSubviews() 内计算和设置。如果方向发生变化,setter 观察器会调用 setUp() 方法。我仍然很好奇为什么其他方法不起作用,但解决方法可以。