Swift 2.2 - 导航控制器的工具栏:何时将其添加到视图控制器并更新视图框架大小?

时间:2016-09-06 04:22:40

标签: uiviewcontroller uinavigationcontroller swift2 uitoolbar

我遇到了一个困扰我近一天的案子。

我得到了这个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)。

为什么我从其他视图控制器返回后第一次刷新高度值并没有正确更新? 你能帮我提一个解决方案来解决这个问题吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

刚刚得到解决方案:viewDidLayoutSubviews确实有帮助!

viewDidLayoutSubviews中,视图框架大小稳定,因此可以在内部安全地更新UI。

此致