23

WWDC 2012 のビデオの 1 つである Auto Layout By Example では、Autolayout を使用した OS X アプリのデモを行い、約 7 ~ 8 分で、単一のビューで属性インスペクターのチェックボックスをオフにする方法を示しています。ボックスは、「自動サイズ変更マスクを制約に変換」のようなものと呼ばれます。さて、私はこのボックスに相当するコード、translatesAutoresizingMaskIntoConstraintsをよく知っています。ブール値ですが、iOS または OS X プロジェクトのどこにもこのチェックボックスが見つからないようです。私のプロジェクトでは Autolayout を使用しています。Autolayout を学習する (およびスプリング/Struts アプリを AL に変換する) 際に苦労していることの 1 つは、Xcode が各ビューに対して生成した数百万の制約と、それらをクリーンアップして賢明にオーバーライドする方法であるため、このチェックボックスが本当に必要です。コード内の一部/すべて。一度に 1 つのビューでこの変換を行うには、これらの自動生成された制約をオフにする必要があります。

このチェックボックスが表示されないのはなぜですか? Xcode 4.6 を使用しています。

4

1 に答える 1

27

このチェックボックスは、Interface Builder (IB) で使用できますが、OS X を対象とした Cocoa プロジェクトを開発している場合に限られます。iOS の場合、現時点では使用できません。プログラムでのみ設定できます。

私の理解では、iOS の自動レイアウト (および他の人はここで自由に提案してください) は、OS X で利用可能なものの完全な実装ではありません。

正直なところ、その後の発言を考えると、このチェックボックスはおそらく気にする必要はありません。OS X プロジェクトを Auto Layout にアップグレードする際には重要だと思いますが、一般的に iOS の場合、どちらか一方を混在させることはまずありません。つまり、File Inspector で Xib にチェックボックスをオンにして「Use Autolayout」にするか、しないかのどちらかです。

ここに画像の説明を入力

とはいえ、そのフラグをいじる必要があるユースケースが 1 つあります。これは、ビュー用にスタンドアロンの Xib ファイルを作成し、それを を使用してプログラムでロードする場合loadNibNamedです。これを行うと、デフォルトで古いスタイルの Auto Resizing 制約が新しいスタイルの Auto Layout 制約に変換されます。通常、私は自分自身を追加したいので、そのフラグをザップに設定します。

myView.translatesAutoresizingMaskIntoConstraints = NO

とにかくそれはまた別の話です。

詳細については、次のリンクを参照してください。すでにご覧になっていることは間違いありません。

自動レイアウトの採用

私が言いたいことの 1 つは、最初に Auto Layout に苦労している場合 (そうでなければ人間ではないだろうということです)、私は Interface Builder を使い続けて、黄金ルール。私にとって最も重要なことは、あいまいさを嫌うということです。それは自然の真空のようなものです。不要な制約を削除する前に、必要な制約を追加してから、古い制約を消去する必要があります。

私が犯したもう 1 つの間違いは、自動レイアウトとフレームを混在させたことです。したがって、フレーム幅をチェックしてから、それを制約に適用するコードを実行します。悪い間違い。それは本当に涙で終わります。CGRect自動レイアウトに入るときは、frame、 などで何かをすることを本当に忘れることが不可欠です.

それでも我慢してください。IB のいくつかの単純なビューから始めて、実験してください。本当に、狂気への方法があります。

注目に値するもう1つのリンクは次のとおりです。

Cocoa Autolayout について知っておくべき 10 のこと

于 2013-06-10T08:45:26.833 に答える