2017-03-26 4 views
1

値w R人事制約の変化の方向を区別する方法:のための制約の変化を通じての向きを特定することは不可能であるとして、しかし、それは見えます、デバイスの向きに応じてUIImageViewに9または9時16アスペクト比の制約をそのようなケースはwR hR = hR wRです。 1は、この問題に対処するにはどうすればよい私は16に適用しようとしている

答えて

1

あなたは

  • は、ビュー上で16ある1 2つの比率の制約を追加する必要があります:9と9時16分であること、他のを。そのうちの1つだけがIBの属性インスペクタで選択されていることを確認してください。
  • IBOutlet 2つの比率制約への参照。ビューコントローラの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 
    } 
    
+0

注意、 'traitCollectionを上書きしたくなりますAppleはこれを嫌う(https://developer.apple.com/reference/uikit/uitraitenvironment/1623514-traitcollection)。しかし、ビューコントローラの包含を実装する場合、親に['setOverrideTraitCollection'](https://developer.apple.com/reference/uikit/uiviewcontroller/1621406-setoverridetraitcollection)を使用させることができます。言ったように、私はそれが上記のように行うほうが簡単だと思います。 – Rob

関連する問題