我正在尝试获取由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的高度。
答案 0 :(得分:1)
viewWillTransitionToSize
基本上说它还没有过渡,所以你会在转换之前获得值,这就是你反过来得到这些值的原因。例如,将动作设置为按钮,从viewWillTransitionToSize
打印完全相同的内容,您将看到您将获得正确的值。