0

我有一个导航栏以编程方式添加到使用 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

4

1 回答 1

0

如果你想根据方向变化改变高度,你需要在方向变化时抓住

下面的方法将帮助您做到这一点。因此,也可以根据此方法中的方向更改布局。

 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)

    }
于 2017-05-29T08:19:16.627 回答