私はUIStackView
を垂直方向にスクロールさせてUIScrollView
内にあり、すべてが自動レイアウトを使用して制約されています。スクロールビューはスーパービューを塗り潰し、スタックビューはスクロールビューを塗りつぶし、さまざまな要素がスタックビューに追加されます。これをオートレイアウトでうまく再生し、スクロールビューのコンテンツサイズを定義するには、スタックビューの幅も指定する必要があります。これは、スタックビューにスクロールビューの幅に等しい幅制約を追加することによって行われます。この時点では何もあいまいではなく、まったく同じように動作します。スクロールでスタックビューを使用し、セーフエリアのインセットを守ります
要素が画面の左端と右端まで伸びないように余白を追加する場合は、スタックビューの先頭と末尾の制約定数を両側に15pt挿入するように変更できます例えば。しかし、等幅の拘束定数を必ず-30に変更する必要があります。スクロール可能なコンテンツを挿入しても画面の端からスクロールしてスクロールできます
コンテンツが住宅用センサーの下に置かれているため、iPhone Xが登場し、ランドスケープでは15フィートの埋め込みでは不十分です。したがって、これを更新して、安全領域のレイアウトマージンを尊重するように余白を設定する必要があります。あなたは本当にデフォルトのマージンを使いたいだけです。スタックビューの先頭と末尾の制約定数を変更して、ビューのレイアウトマージン(セーフエリアのインセットを考慮)を使用することはできますが、等しい幅の制約定数がマージンの2倍でなく、マージンが動的であるため機能しません今。
これを解決する1つの方法は、スタックビューの先頭と末尾と幅の制約のためにIBOutlet
を作成し、レイアウトマージンが変更されたときにすべてプログラムで調整することです(viewLayoutMarginsDidChange
)。しかし、より良いアプローチがあるのか、私は心配しています。Interface Builderでコード内で動作するソリューションが望ましいでしょう。
私のiPhone Xストーリーボードの「この制約を使用するだけでなく、この他のものを追加するか、この定数を変更する」という良い方法は見つかりませんでした。私はあなたが正しいアイデアを持っていると思う:アウトレットを追加し、それに応じてあなたの定数を微調整する。しかし、ちょっとした騒ぎ。 – cbowns