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)
}