ios - 方向更改时 UINavigationController 工具栏高度

标签 ios swift uinavigationcontroller orientation uitoolbar

我正在尝试获取 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。

最佳答案

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

关于ios - 方向更改时 UINavigationController 工具栏高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29304825/

相关文章:

swift - 如何从 bundle 而不是下载中设置kml的图标样式

swift - didUpdateLocation 什么时候被调用?

ios编程,在UINavigationcontroller中使用ImagePicker

ios - 管理多个 UINavigationController 堆栈的最佳实践

iphone - 导航到 SplitViewController

ios - 将 View 添加到将拉伸(stretch)以填充可用宽度的 ScrollView

objective-c - 简单的 addObject 到 NSMutableArray 方法给出 lldb 错误

ios - Youtube 视频无法在 iOS 8 中以横向模式播放

ios - 无法将类型 'Swift.UInt64' (0x10dddde88) 的值转换为 'Swift.AnyObject' (0x12129d018)

swift - 将 NSMutablearray 的特定索引数据复制到 swift 中的另一个索引数据