0

リレーショナル制約をビジュアル形式に変換しようとしています。サブビューは、スーパー ビューと同じ幅と高さです。

これが私のコードです:

[parentView addConstraint:[NSLayoutConstraint
       constraintWithItem:childView
                attribute:NSLayoutAttributeHeight
                relatedBy:NSLayoutRelationEqual
                   toItem:parentView
                attribute:NSLayoutAttributeHeight
               multiplier:1.0
                 constant:0]];

[parentView addConstraint:[NSLayoutConstraint
       constraintWithItem:childView
                attribute:NSLayoutAttributeWidth
                relatedBy:NSLayoutRelationEqual
                   toItem:parentView
                attribute:NSLayoutAttributeWidth
               multiplier:1.0
                 constant:0]];

これを視覚的な形式に変換するにはどうすればよいですか?

4

2 に答える 2

2

これは、水平方向と垂直方向の 2 つのビジュアル フォーマット文字列を使用して行うことができます。

NSDictionary* views = NSDictionaryOfVariableBindings(parentView, childView);
NSArray* horzConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[childView(==parentView)]" options:0 metrics:nil views:views];
NSArray* vertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[childView(==parentView)]" options:0 metrics:nil views:views];

厳密に言えば、それはあなたが示した制約と一致します。子は親と同じサイズになりますが、親内での子の位置は指定されません。

Antonis がコメントで提案したように、これには別の方法でアプローチできます。とを使用H:|[childView]|V:|[childView]|て、子のエッジを親のエッジと一致させることができます。これは、間接的ではありますが、サイズだけでなく、位置も決定します。

于 2015-07-29T04:20:47.483 に答える
0

ストロイボードに制約を追加し、View Controller にアウトレットを作成し、必要に応じて定数を更新することをお勧めします。

さまざまな画面サイズ (4、5s、6、6 Plus など) に基づいて動的に管理および変更するのは簡単です。

于 2015-07-28T23:03:17.750 に答える