UI コンポーネントに制約を与えるまでは、自動サイズ設定オプションを利用できます。
3 に答える
できますが、すべきではありません
一部のビューで制約を使用し、他のビューで自動サイズ設定を使用できますが、問題が発生するため、同じビューでそれらを混在させないように注意してください (自動サイズ設定情報が失われます)。
iOS は、自動サイズ変更の情報を制約エンジンに伝える制約を作成することで、ビューの自動サイズ変更を処理します。この動作は、適切な名前のtranslatesAutoresizingMaskIntoConstraints プロパティによって有効または無効にできます。
ビューに制約を追加して、この値を に設定することで古い動作で自動サイズ変更するtrue
こともできますが、すべてのビューに制約を使用することをお勧めします。
はい、 Xcode 8内で (単一のビュー内のサブビューで制約と自動サイズ変更を組み合わせて使用) できます。見る:
02:38 https://developer.apple.com/videos/play/wwdc2016/236/
Xcode 8 では、translatesAutoresizingMaskIntoConstraints
各ビューのプロパティは Interface Builder によって自動的に維持されます。
- デフォルトでは、子ビューが最初に追加されたとき、プロパティの値は true です。
- 最初の制約が子ビューに追加されると、値は自動的に false に設定され、[サイズ インスペクター]ペインが [制約]ビューに変わります。
- 最後の制約が子ビューから削除されると、プロパティの値は自動的に true に戻り、サイズ インスペクターはAutoresizingビューに戻ります。
- プログラムでビューを作成すると、Xcode
constraints
はそれ自体を満たすように生成しautoresizing
ます (translatesAutoresizingMaskIntoConstraints
は に設定されtrue
ます)。ただし、IB でビューを作成すると、Appleは次のように述べています。
Interface Builder でビューを追加すると、システムはこのプロパティを自動的に false に設定します。
- それを反映するために、Xcode 8がその
autoresizing
オプションを非表示にする前に IB に追加されたビューはすべて非表示になっています (または、少なくともそこにしばらく表示されませんでした)。
しかし、ここに問題があります:
- Xcode 8以降、制約を追加するまでオプションが表示される (
translatesAutoresizingMaskIntoConstraints
に設定されるtrue
) ため、上記の Apple のテキストは実際には正しくないと思います。
したがって、単一のビューでは、両方を満たす/使用することはできません。ビュー(自動サイズ変更と制約)
サブビューでは、それぞれに異なる使い方ができますが、めちゃくちゃになり、合理的な使い方が想像できません。ビュー -> サブビュー (制約) とサブビュー (自動サイズ変更)
これは、たとえばview(autoresizing)->subview(constraints)を使用できることも意味します