代码之家  ›  专栏  ›  技术社区  ›  mightknow

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

  •  0
  • mightknow  · 技术社区  · 6 年前

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

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

    如果我使用不推荐的方法 didRotate(from fromInterfaceOrientation: UIInterfaceOrientation)

    2 回复  |  直到 6 年前
        1
  •  0
  •   NSAdi    6 年前

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

    试着使它强大,如果它是一个坏的参考情况下,那么这应该修复它

    @IBOutlet var myView: UIView!
    
        2
  •  0
  •   mightknow    6 年前

    所以,我仍然没有弄清楚为什么最初的问题会发生,但我找到了一个解决方法。通常情况下,可以根据 UIScreen.main.bounds viewDidLayoutSubviews() myView.setUp() 方法太过处理器密集,所以不可行。所以,我把我的 UIViewController orientation . 然后setter观察器调用 setUp() 方法,如果方向发生更改。我仍然很好奇为什么另一种方法不起作用,但是变通方法可以。