iOS AutoLayoutビジュアルフォーマット - アラインメント
-
12-12-2019 - |
質問
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を合わせる必要はありません。さもなければ、私はあなたの質問の文脈を正しく理解していません。
所属していません StackOverflow