2017-07-19 5 views
0

サイズクラスを使用する制約に問題があります。コード内でサイズクラスの制約の定数を変更するが、ストーリーボードの値に戻す

ストーリーボード内では、ビューの幅制限をコンパクト幅とレギュラー幅サイズのクラスの異なる値に設定しています。 View Controller内で、私はviewDidLoad()の中で定数をゼロに設定しているその制約への参照を持っています。

問題は、制約の定数がストーリーボードの値に戻ってしまうことです。viewDidAppear()が呼び出された後を除きます。その後、制約定数はソースコード内で設定した値にとどまります。

viewWillAppear()の範囲内で制約の定数をゼロに設定しても、ストーリーボードの値に戻すという制約が引き続き発生します。

私はストーリーボードから制約を削除してコード内で実行できますが、なぜこれが起こっているのか、そして制約を削除する必要がないストーリーボードから。

+0

ビューのライフサイクルに関連しているようです。後でオーバーライドする際にコーディングしてみましたか?たぶん 'viewWillTransition(サイズ:CGSize、コーディネータ:UIViewControllerTransitionCoordinator)'?これは、IBを使用していない場合は、サイズクラスに対してコード化するオーバーライドです。 – dfd

答えて

0

をチェックアウト、私は自動レイアウトは、デフォルトの制約を使用して、すべてをレイアウトして、アウトすべてを産むと思いますビューが表示される前に、サイズクラスを考慮します。そのため、制約が「元に戻す」のです。実際には、サイズクラスの最初の正しい値に設定されています。

とにかく、制約を変更する前にviewDidLoad()view.layoutIfNeeded()を呼び出して問題を解決しました。

関連する問題