【问题标题】:UINavigationController toolbar height on orientation change方向更改时的 UINavigationController 工具栏高度
【发布时间】:2015-06-01 00:36:55
【问题描述】:

我正在尝试获取由NavigationControleller 提供的toolbar 的高度,而不是手动添加的。我的横向高度为 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。

【问题讨论】:

  • 不,我已经看到了,但没有帮助。问题是导航栏是手动添加的(这不是我上面提到的),并且海报需要以编程方式更改其大小。恕我直言,这是一个不同的问题。
  • 任何带有“will”字样的方法都表示它还没有发生。您应该寻找“did”关键字,以便您的代码在它发生后运行。
  • 有道理!我必须从以前的方向得到尺寸。我怎么没注意到!!没有viewDidTransitionToSize,但应该有东西。感谢您指出这一点。

标签: ios swift uinavigationcontroller orientation uitoolbar


【解决方案1】:

viewWillTransitionToSize 基本上是说尚未转换,因此您将在转换之前获得值,这就是为什么您以相反的方式获得值的原因。例如,将操作设置为从viewWillTransitionToSize 打印完全相同的内容的按钮,您将看到您将获得正确的值。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多