37

に設定translatesAutoresizingMaskIntoConstraintsする必要がありNOます。デフォルトでは、YES(ストラットとスプリングから新しい自動レイアウトに移行するアプリの大部分を支援するために)に設定されています。

Xcodeのどこかに、デフォルトをからYESに変更できる場所はありますNOか?

または、ビューごとに手動で設定する必要がありますか?

4

4 に答える 4

21

私はこの質問に遅れていますが、言及されたオプションはXcode 5および6にはまだないため、質問は依然として意味があります.

実際には、次のスクリーンショットのように、ストーリーボード (Interface Builder) でユーザー定義のランタイム属性を追加することにより、ビュー/コントロール/オブジェクトの任意のプロパティに値をいつでも設定できます。

また、 translatesAutoresizingMaskIntoConstraintsに対しても機能します。それで疑問は解決できました。

ここに画像の説明を入力

于 2015-01-29T13:00:46.180 に答える
17

これは素晴らしい質問です - そして私は自分自身への答えを見つけようとしました. 悲しいことに、「クイックフィックス」はないようです。現在、Apple は Constraint-based layout Opt-in を検討しています - UIViewClass Referenceのセクションに名前を付けることさえ:

制約ベースのレイアウトへのオプトイン

しかし、そのオプトインはグローバルではありません。これは、Springs & Struts を Constraints に変えるだけでは、すべてがうまくいくとは限らないためだと思います。一部の UI 要素が破損するか、満足できない制約エラーが大量に発生します。

考えられる解決策の 1 つを考えることができます。自分で試したことはありませんが、すべてのオブジェクトを返すようにUIView設定するカテゴリを作成できます。これが何を壊すのかはわかりませんが、グローバルに に設定されます。 UIViewNO- (BOOL)translatesAutoresizingMaskIntoConstraintstranslatesAutoresizingMaskIntoConstraintsNO

カテゴリについて詳しく知りたい場合は、ここでカテゴリの紹介をご覧ください

于 2013-01-10T21:33:01.507 に答える
5

ドキュメントによると、NOInterface Builder を介してビューが追加された場合、このプロパティは自動的に に設定されます。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instp/UIView/translatesAutoresizingMaskIntoConstraints

于 2015-12-03T08:30:53.987 に答える
5

サブビューのサイズまたは位置を変更する必要がある場合。(BOOL)translatesAutoresizingMaskIntoConstraintsサブビューのフレームを設定する前にメソッドを使用してください。

[self.benchmarkButton removeFromSuperview];
[self.benchmarkButton setTranslatesAutoresizingMaskIntoConstraints:YES];
[self.benchmarkButton setFrame:CGRectMake(20, self.benchmarkButton.frame.origin.y+40, 260, 30)];
[self.benchmarksView addSubview:self.benchmarkButton];

Xcode 4.3以降ではデフォルト(AutoLayout)であるため、サブビューは制約と戦わないようにします。ありがとう

于 2013-03-06T08:06:37.587 に答える