0

非常に単純な (願わくば) iMac に頭をぶつけている自動レイアウトの問題です。

私はこれを肖像画で持っています

ここに画像の説明を入力

そして、これは風景で起こることです。

ここに画像の説明を入力

私が望むのは、自動レイアウトを使用していない場合と同じようにラベルが広がることだけです。それらを均等に配置するには、どのような制約を追加しますか?

4

4 に答える 4

2

@sust86 のソリューションよりもややシンプルで柔軟なソリューションがあります。

  1. ラベル間のスプリングとして機能する空のビューを導入します。
  2. 隣接するすべてのビューを一定距離の制約で接続します。
  3. 新しい spring-view の 1 つを他のすべての spring-view と同じ幅の制約で接続します。
  4. 不要な制約を削除します。

私にとって、制約は次のようになります。

ここに画像の説明を入力

この構成には、ラベル (私の場合はボタン) の幅が変更されたときに間隔を修正する必要がないという利点があります。

于 2013-04-09T19:40:50.137 に答える
1

これを試して:

#define moneyLabelWidth 20
@property (nonatomic, strong) UILabel* moneyOneLabel;
@property (nonatomic, strong) UILabel* moneyTwoLabel;
@property (nonatomic, strong) UILabel* moneyThreeLabel;
@property (nonatomic, strong) UILabel* moneyFourLabel;
@property (nonatomic, strong) UILabel* moneyFiveLabel;
@property (nonatomic, strong) UILabel* moneySixLabel;
...
[self.view addSubview:moneyOneLabe];
[self.view addSubview:moneyTwoLabe];

moneyOneLabel.translatesAutoresizingMaskIntoConstraints = NO;
moneyTwoLabel.translatesAutoresizingMaskIntoConstraints = NO
etc
...


[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[_moneyOneLabel(moneyLabelWidth)]-[_moneyTwoLabel(moneyLabelWidth)]-[_moneyThreeLabel(moneyLabelWidth)]-[_moneyFourLabel(moneyLabelWidth)]-[_moneyFiveLabel(moneyLabelWidth)]-[_moneySixLabel(moneyLabelWidth)]-|"
                                                                  options:0
                                                                  metrics:@{@"moneyLabelWidth":@(moneyLabelWidth)}
                                                                    views:NSDictionaryOfVariableBindings(_moneyOneLabel, _moneyTwoLabel, _moneyThreeLabel, _moneyFourLabel, _moneyFiveLabel, moneySixLabel)]];
/*add vertical constraints*/

上記のconstrainsWithVisualFormatは、基本的に、左端から右端まで、幅が20で、幅が可変の6つのマネーラベルを水平方向に描画することを示しています。私はこのコードを実行していませんが、機能すると思います(または少なくとも近くにあります)。

于 2013-01-24T05:41:54.750 に答える
1

最も簡単な方法は、各ビュー間で2 つの制約を使用することです。1 つはGreater Than または Equalで、もう 1 つはLess Then または Equalです。最小サイズ (より大きいか等しい) は、縦向きモードの間隔である必要があります。最大サイズ (より小さいか等しい) は、ランドスケープ モードの間隔である必要があります。

これは、私がこの質問に提供したのと同じ解決策です:

自動レイアウトを使用して、サイズ変更時にスペースを均等に変更する

于 2013-01-25T10:11:48.883 に答える
1

iOS 6 で新しい制約を使用するのは注意が必要です。ray の Web サイトには、iOS 6 の自動レイアウトに関連する 2 部構成の優れたチュートリアルがあります。画像ホルダーを自動レイアウトに固定する方法を説明していますが、原則は自動レイアウト全体を理解するのに役立ちました。これがあなたにも役立つことを願っています。Herer はリンクです: http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2 Adrian

于 2012-10-25T21:43:01.560 に答える