質問

IOS6では、AutoLayoutsを使用しています。

  • iは、プログラムで2ビューV1とV2を作成しました。
  • v2はv1
  • にサブビューとして追加されています
  • V1の制約はすでにプログラムで作成されています(ここでは示されていません)。
  • V1とV2が同じサイズであることを望み、V2の上にV1の上に置くことがv2の上に拍手(v2がv1
  • の上に正確に配置したいです。

質問:

  • これを達成するにはどうすれば(好ましくは視覚的な形式を使って代替的なアプローチを提案することができます)?

コード - 下記のものは私の試みですが、それは望ましい出力を提供しません。 - スローされたエラーはありません。V1は正しく配置されていますが、V2はV1

の左隅です。

注 - 私は以下のコメントで説明してきました。

[v1 addSubView:v2];

v1.translatesAutoresizingMaskIntoConstraints        = NO;
v2.translatesAutoresizingMaskIntoConstraints        = NO;

NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(v1,
                                                              v2);

//I wanted v1 and v2 to be of the same height and wanted the center Y to be aligned together
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[v2(==v1)]"
                                                                         options:NSLayoutFormatAlignAllCenterY
                                                                         metrics:nil
                                                                           views:viewDictionary];


//I wanted v1 and v2 to be of the same height and wanted the center X to be aligned together
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[v2(==v1)]"
                                                                       options:NSLayoutFormatAlignAllCenterX
                                                                       metrics:nil
                                                                         views:viewDictionary];

[v1 addConstraints:horizontalConstraints];
[v1 addConstraints:verticalConstraints];
.

役に立ちましたか?

解決

この作品だけではありませんか?

NSMutableArray *constraints = [NSMutableArray new];

constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"|[v2]|"
                                                                        options:0
                                                                        metrics:nil
                                                                          views:NSDictionaryOfVariableBindings(v2)];
constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v2]|"
                                                                        options:0
                                                                        metrics:nil
                                                                          views:NSDictionaryOfVariableBindings(v2)];
[v1 addConstraints:constraints];
.

これがどのようなものであるのか、V2がその高さと幅をスーパービューのサイズに伸ばします。この場合はV1で、その上部にその右側に位置しています。

あなたの場合は、View CenterXとCenteryを合わせる必要はありません。さもなければ、私はあなたの質問の文脈を正しく理解していません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top