UINavigationController工具栏高度方向更改

时间:2015-03-27 15:51:31

标签: ios swift uinavigationcontroller orientation uitoolbar

我正在尝试获取由toolbar提供的NavigationControleller的高度,而不是手动添加。当我在屏幕上看到/获得的内容显然与我相比,我在高度为44的景观和32的纵向

以下是我职能的相关部分:

// Update the layout based on the orientation
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {

    // Add the constraints based on the orientation
    if UIDevice.currentDevice().orientation.isLandscape.boolValue {
        println("Landscape")
    } else {
        println("Portrait")
    }

    let toolbarHeight = self.navigationController!.toolbar.frame.size.height
    let toolbarIntrinsicHeight = self.navigationController!.toolbar.intrinsicContentSize().height

    println("height = \(toolbarHeight)")
    println("Intrinsic height = \(toolbarIntrinsicHeight)")
    println("-------------")

}

这是控制台输出:

Landscape
height = 44.0
Intrinsic height = 44.0
-------------
Portrait
height = 32.0
Intrinsic height = 32.0
-------------

有什么问题?这样做的正确方法是什么?

注意:我使用的是iPhone 5s和iPhone 6的模拟器.iPhone 6 plus在两个方向都有44的高度。

1 个答案:

答案 0 :(得分:1)

viewWillTransitionToSize基本上说它还没有过渡,所以你会在转换之前获得值,这就是你反过来得到这些值的原因。例如,将动作设置为按钮,从viewWillTransitionToSize打印完全相同的内容,您将看到您将获得正确的值。