如何在swift中旋转屏幕后获得视图的高度?

时间:2015-03-24 13:32:54

标签: ios swift rotation

有一个视图,我在故事板中添加了约束,因此它会在屏幕旋转后改变其大小,那么如何在屏幕旋转后获得其高度和宽度?我在这样的旋转事件函数中试过这个:

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) 
{
    println("h:\(view.bounds.size.height)")
    println("w:\(view.frame.size.width)")
}

但它只给我旋转前的大小。我想得到类似的东西:

"现在是风景,高度是......宽度是......" "现在是肖像,高度是......宽度是......" 在轮换事件函数中

2 个答案:

答案 0 :(得分:13)

您正在使用的功能"将转换",这意味着转换未完成,因此您无法获取新的大小。

您需要使用:

dispatch_async(dispatch_get_main_queue()) { 
    println("h:\(view.bounds.size.height)")
    println("w:\(view.frame.size.width)")
             }

此代码将在完成轮换后(在主队列中)执行,并且新的大小可用。

问候。

答案 1 :(得分:5)

Swift 3

crom87为Swift 3更新了答案:

override func viewWillTransition( to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator ) {
  DispatchQueue.main.async() {
    print( "h:\(self.view.bounds.size.height)" )
    print( "w:\(self.view.frame.size.width)" )
  }
}