1

問題

一部のサードパーティ製ライブラリが使用されています。translatesAutoresizingMaskIntoConstraints一部のビューは に設定すると消えますNO

autoresizingMask自分のコードで自分のビューに他の設定をしないでください。ライブラリでは、autoresizingMaskコードの一部も削除されています。代わりに、これらのビューに対して明示的な境界/中心/フレームが設定されます。nib ファイルはなく、ビューはすべてプログラムで作成されます。

他の人が完全な自動レイアウト制約セットを与えることで同様の問題を解決していることは知っていますが、私の場合は、自動レイアウトをオフにして手動で行うことを意味します。自動レイアウトがいつオンになるかわかりません。

一部の人々は、「デフォルトでは、アプリの起動時に自動レイアウトがオフになり、システムは iOS 5 以前と同じように動作します。しかし、アプリの実行中にシステムが自動レイアウトの制約 (コードで生成された) を検出した場合、または「自動レイアウトを使用」がチェックされているペン先をロードすることによって)、自動レイアウト システムがオンになり、それ以降は自動レイアウトで実行されます。」(Matt Neuberg による iOS 6 のプログラミング、ページ 383-384) ですが、私のプロジェクトでは、自動レイアウトの制約が残っているとは思いません。

コードはかさばりますが、必要に応じてスケルトンをアップロードします。

ヒントをありがとう!

4

1 に答える 1

2

自動レイアウトを使用したくない場合は、に設定translatesAutoresizingMaskIntoConstraintsする必要がありますYES。ここに参照があります

これは、プロパティ translatesAutoresizingMaskIntoConstraints を通じて機能します。このプロパティがデフォルトの YES の場合、ビューの自動サイズ変更マスクは制約に変換されます。たとえば、ビューが図 6-1 のように構成されていて、translatesAutoresizingMaskIntoConstraints が YES の場合、制約 |-20-[button]-20-| V:|-20-[button(20)] がビューのスーパービューに追加されます。最終的な影響は、10.7 より前のバージョンの OS X と同じように、非認識ビューが動作することです。

自動レイアウトを認識するビューの場合、ほとんどの場合、translatesAutoresizingMaskIntoConstraints を NO にする必要があります。これは、自動サイズ変更マスクを変換することによって生成された制約が、スーパービューのフレームを指定してビューのフレームを完全に指定するのにすでに十分であり、通常は多すぎるためです。たとえば、これにより、タイトルが変更されたときに、ボタンが最適な幅を自動的に想定することがなくなります。

于 2013-10-28T10:20:02.110 に答える