2013-06-10 7 views
22

WWDC 2012ビデオの1つで、オートレイアウトバイケースの例では、Autolayoutを使用してOS Xアプリケーションをデモンストレーションし、約7分または8分でアトリビュートインスペクタでボックスのチェックを外すことができます。このボックスは、という名前で、「自動サイズ調整マスクを制約に変換する」と呼ばれます。今、私はこのボックスに相当するコードをよく知っています。translatesAutoresizingMaskIntoConstraintsブール値ですが、このチェックボックスはiOSまたはOS Xプロジェクトのどこでも見つけることができません。私のプロジェクトはAutolayoutを使用しています。 Autolayoutを学ぶ際に苦労していることのひとつ(そしてバネ/ストラットアプリをALに変換する)の1つは、Xcodeが各ビューに対して生成した数百万の制約と、それらをクリーンアップして賢明に上書きする方法ですいくつか/すべてのコードです。この変換を一度に1つずつ実行するには、これらの自動生成された制約をオフにすることが必要です。Xcodeのチェックボックスはどこですか?「自動サイズ調整マスクを制約に変換する」

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

答えて

25

このチェックボックスはInterface Builder(IB)で利用できますが、OS Xを対象としたCocoaプロジェクトを開発している場合にのみ表示されます.iOSの場合は現在利用できません。プログラムでのみ設定できます。私の理解から

iOSの

自動レイアウトに - と他の人がここでピッチ気軽に - あなたは後で言うことを考えると、正直に言うとOS Xの

で利用可能なものの完全な実装ではありません、このチェックボックスおそらくあなたが心配する必要がないものです。 OS Xプロジェクトを自動レイアウトにアップグレードすることが重要だと思うが、一般的にはiOSの場合は混在する可能性は低い。つまり、ファイルインスペクタのXibを「Use Autolayout」にチェックするか、チェックしないでください。あなたはそのフラグを台無しにする必要があるかもしれません1ユースケースがある、と述べた

enter image description here

。これは、ビューのスタンドアロンXibファイルを作成し、loadNibNamedを使用してプログラムでロードする場合です。これを行うと、デフォルトで古いスタイルの自動サイズ変更制約が新しいスタイルの自動レイアウト制約に変換されます。典型的には私は自分自身を追加したいので、私はそのフラグを設定してください。また別の話だ。とにかく

myView.translatesAutoresizingMaskIntoConstraints = NO

あなたはすでにそれを見ていた疑いをしましたが、ここでは、より多くの情報のためのリンクです:私が言うと思います

Adopting Auto Layout

一つは、あなたが自動レイアウトで苦労している場合ということですあなたがいなかったらあなたは人間ではないだろう、私たちは皆あった。そして、私はInterface Builderに固執し、黄金のルールについて考えるだろう。私にとって最も重要なのは、あいまいさが嫌いだということです。それは自然界の真空のようなものです。が不要である制約を削除する前に、の1つを追加して、古いものをザップする必要があるを追加する必要があります。

私が作った他の間違いは、オートレイアウトとフレームを混在させることでした。だから私は、フレーム幅を確認し、制約に適用するいくつかのコードを行うだろう。悪い間違い。それは本当に涙で終わります。自動レイアウトに入るときは、CGRectframeなどで何かをすることを本当に忘れることが不可欠です。

それにこだわる。 IBの簡単なビューから始めて、実験してください。本当に狂気への方法があります。

もう一つのリンクも見て価値がある:

10 Things You Need To Know About Cocoa Autolayout

+0

うわー、その詳細かつ明確な返事をありがとうそんなにマックス、。私はまだ、iOSプロジェクトを変換する際にこれが必要ないかもしれないと言う理由で、やや混乱しています。私は、ALに段階的に部分的に変換できるようにしたいだけです。私はそれがそこになければ、そこにはないが、なぜそれが明示的にiOSの開発キットから除外されるのだろうと思っている状況の1つで、他の開発者が不平を言わない理由.ie私はどこかでポイントを逃しているのだろうかと疑問に思っています... – bobsmells

+0

おそらくiOSで彼らはあなたがIBでほぼ独占的に、おそらくストーリーボードを使っていると思うからです。スタンドアロンビューを読み込むXibsは、プログラムによってloadNibNamedを使用すると、おそらくAppleよりはるかに一般的ではないと考えられます。あなたのプロジェクトはどのように設定されていますか?関連するビューを持つ標準のView Controllerを持っていますか、またはloadNibNamedを使用していますか? –

+0

私は、関連するビューを持つ標準VCを持っています。私はサードパーティのコンポーネント(iCarousel-https://github.com/nicklockwood/iCarousel)を使用しています。これは、tableviewsを扱うときにcellForRowAtIndexPathと同様の方法で、各パネルに独自のビューを提供するためのフックを提供します。問題は、ビューがそのメソッドから返されるということです。つまり、スーパービューに実際に追加することは決してありません。つまり、制約を追加する機会はありません。明らかに私はiCarouselのコードを掘り下げてそのようにすることができますが、確かに私は何かが欠けています...私はブラックボックスとしてフレームワークを使うことができませんか? – bobsmells

関連する問題