4

私の質問を例で示すのが最も簡単かもしれません。

A と B の 2 つのサブビューを持つコンテナー ビューがあります。

コンテナ: 240x80

A: 80x80、先頭/上/下の間隔を固定。

B: 160x80、行間/上/下の間隔を固定、A で h の間隔を固定。

ここに画像の説明を入力

ここで、コンテナーのサイズを 480x80 に変更すると、次のようになります。 ここに画像の説明を入力

これは、Xcode が私の制約があいまいであると考えるため、A の幅を固定し、追加の水平スペースをすべて B に与えるためです。

わかりました、その懸念は理解していますが、私が本当に望んでいるのは、次のように A と B の両方を比例してサイズ変更することです。

ここに画像の説明を入力

私の推測では、抱きしめ/圧縮抵抗の優先設定と関係があると思いますが、それらの値を設定して希望する結果を得る方法がわかりません!

この質問を別の言い方をすれば、コンテナーが拡大されたときに、余分なスペースをどこに置くかをどのように指定すればよいでしょうか? スペースがビュー A とビュー B に 4:6 で配分されるように優先順位を設定するにはどうすればよいですか? 5:5? 8:2?

ありがとう!

4

2 に答える 2

6

これは、あなたが今尋ねた他の質問と非常によく似ています。必要な比率を得るために、乗数を使用して、1 つのビューの幅を他のビューの幅と等しくする制約を作成します。

NSLayoutConstraint *con = [NSLayoutConstraint constraintWithItem:self.viewA attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.viewB attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];

この制約は、ビュー A と B のスーパービューに追加する必要があります。

于 2013-01-07T01:11:51.810 に答える
4

提供された回答が価値がないわけではありませんが、ビュー A とビュー B の間に等幅の制約を作成し、乗数を設定することで、Xcode (5.1.1) でこれを行うことができるはずです。

これを行うには、これら 2 つのビューの間にあるその他の幅の制約をすべて削除し、ビュー A からビュー B へのドラッグを制御して、等幅制約を選択します。Document Outline ビューからその制約を選択し、インスペクターで Multiplier を目的の比率に変更します。あなたの場合、1:3、またはそれに近いもののように見えます。私のビューは次のようになります。

ここに画像の説明を入力

インスペクタは次のようになります。

ここに画像の説明を入力

あなたがそれを正しくするまで、比率で遊んでください。

于 2014-08-07T23:12:42.567 に答える