我遇到了一个困扰我近一天的案子。
我得到了这个ViewController:
class MyViewController: UIViewController {
var items = [UIBarButtonItem]()
override func viewDidLoad() {
print(“view0: \(view.frame)”)
// initialize items...
}
override func viewDidAppear(animated: Bool) {
navigationController?.toolbarHidden = false
navigationController?.toolbar.items = items
print(“view1: \(view.frame)”)
}
}
第一次运行时,控制台会按预期显示:
view0: (0.0, 0.0, 320.0, 568.0)
view1: (0.0, 0.0, 320.0, 423.0)
按下按钮刷新后,控制台显示:
view0: (0.0, 0.0, 320.0, 568.0)
view1: (0.0, 0.0, 320.0, 568.0) // why not 423.0??
MyViewController
实际上是UIPageViewController
的一部分。因此,当我从其他视图控制器返回到此意外高度值(568.0
vs 423.0
)视图控制器后,显示符符合预期(423.0
)。
为什么我从其他视图控制器返回后第一次刷新高度值并没有正确更新? 你能帮我提一个解决方案来解决这个问题吗?
谢谢,
答案 0 :(得分:0)
刚刚得到解决方案:viewDidLayoutSubviews
确实有帮助!
在viewDidLayoutSubviews
中,视图框架大小稳定,因此可以在内部安全地更新UI。
此致