11

UI コンポーネントに制約を与えるまでは、自動サイズ設定オプションを利用できます。

では、ViewController に両方を使用できますか? ここに画像の説明を入力

4

3 に答える 3

7

できますが、すべきではありません

一部のビューで制約を使用し、他のビューで自動サイズ設定を使用できますが、問題が発生するため、同じビューでそれらを混在させないように注意してください (自動サイズ設定情報が失われます)。

iOS は、自動サイズ変更の情報を制約エンジンに伝える制約を作成することで、ビューの自動サイズ変更を処理します。この動作は、適切な名前のtranslatesAutoresizingMaskIntoConstraints プロパティによって有効または無効にできます。

ビューに制約を追加して、この値を に設定することで古い動作で自動サイズ変更するtrueこともできますが、すべてのビューに制約を使用することをお勧めします。

于 2016-06-20T08:59:50.863 に答える
4

はい、 Xcode 8内で (単一のビュー内のサブビューで制約と自動サイズ変更を組み合わせて使用​​) できます。見る:

02:38 https://developer.apple.com/videos/play/wwdc2016/236/

Xcode 8 では、translatesAutoresizingMaskIntoConstraints各ビューのプロパティは Interface Builder によって自動的に維持されます。

  • デフォルトでは、子ビューが最初に追加されたとき、プロパティの値は true です。
  • 最初の制約が子ビューに追加されると、値は自動的に false に設定され、[サイズ インスペクター]ペインが [制約]ビューに変わります。
  • 最後の制約が子ビューから削除されると、プロパティの値は自動的に true に戻り、サイズ インスペクターはAutoresizingビューに戻ります。
于 2016-09-19T14:53:31.437 に答える
0
  • プログラムでビューを作成すると、Xcodeconstraintsはそれ自体を満たすように生成しautoresizingます (translatesAutoresizingMaskIntoConstraintsは に設定されtrueます)。ただし、IB でビューを作成すると、Appleは次のように述べています。

Interface Builder でビューを追加すると、システムはこのプロパティを自動的に false に設定します。

  • それを反映するために、Xcode 8がそのautoresizingオプションを非表示にする前に IB に追加されたビューはすべて非表示になっています (または、少なくともそこにしばらく表示されませんでした)。

しかし、ここに問題があります:

  • Xcode 8以降、制約を追加するまでオプションが表示される (translatesAutoresizingMaskIntoConstraintsに設定されるtrue) ため、上記の Apple のテキストは実際には正しくないと思います。

したがって、単一のビューでは、両方を満たす/使用することはできません。ビュー(自動サイズ変更と制約)

サブビューでは、それぞれに異なる使い方ができますが、めちゃくちゃになり、合理的な使い方が想像できません。ビュー -> サブビュー (制約) とサブビュー (自動サイズ変更)

これは、たとえばview(autoresizing)->subview(constraints)を使用できることも意味します

于 2016-09-15T10:52:26.960 に答える