如何区分wR hR约束变化的方向

时间:2017-03-26 15:34:17

标签: ios xcode storyboard

我尝试将16:9或9:16宽高比约束应用于UIImageView,具体取决于设备方向,但是看起来因为这种情况应该通过约束变化来识别方向是不可能的到wR hR = hR wR

如何处理这个问题?

1 个答案:

答案 0 :(得分:2)

你应该

  • 在视图上添加两个比率约束,一个是16:9,另一个是9:16;确保其中只有一个已安装"在IB中的属性检查器中选择;
  • 添加IBOutlet对两个比率约束的引用;

  • 在视图控制器的viewDidLayoutSubviews(或视图的layoutSubviews)中,只需查看bounds的宽度和高度,然后激活约束相应地:

    @IBOutlet weak var portraitConstraint: NSLayoutConstraint!
    @IBOutlet weak var landscapeConstraint: NSLayoutConstraint!
    
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
    
        let isLandscape = view.bounds.size.width > view.bounds.size.height
    
        landscapeConstraint.isActive = isLandscape
        portraitConstraint.isActive = !isLandscape
    }