VFL与尺寸类特定布局动态与取向支持

问题描述:

我已经导航栏加入编程与VFL(视觉格式语言)的视图VFL与尺寸类特定布局动态与取向支持

这样

navBar.translatesAutoresizingMaskIntoConstraints = false 
self.view.addSubview(navBar) 
let views = ["bar": navBar] 
var constraints = [NSLayoutConstraint]() 
    constraints += NSLayoutConstraint.constraints(withVisualFormat: "H:|[bar]|", options: [], metrics: nil, views:views) 
    constraints += NSLayoutConstraint.constraints(withVisualFormat: "V:|[bar(64)]", options: [], metrics: nil, views:views) 
NSLayoutConstraint.activate(constraints) 

上面的代码正常工作但给导航栏不断高度为64. ,但我想基于手机的方向,纵向64和横向44

如果你想改变高度取决于orientati在更改时,您需要抓取方向更改

下面的方法将帮助您执行此操作。因此,还要根据此方法中的方向更改布局。

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
     if UIDevice.currentDevice().orientation.isLandscape.boolValue { 
      print("Landscape") 
      //Change your code here for landscape 
     } else { 
      print("Portrait") 
      //Change your code here for portrait 
     } 
    } 

斯威夫特3版本:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
     super.viewWillTransition(to: size, with: coordinator) 

    }