0

NSLayoutConstraints を使用して、幅が等しい 2 つ以上の UIView を固定するにはどうすればよいですか?

現在、次のコードを使用していますが、2 つ以上の UIView を固定できません。

for (int i = 0; i < column.count; i++) {
    NSString *horizontalFormat = @"H:|[view1][view2(==view1)]|";
    NSDictionary *views;
    if (i < column.count - 1) {
        views  = @{
                   @"view1": column[i],
                   @"view2": column[i + 1]
                   };
    }else{
        views  = @{
                   @"view1": column[i - 1],
                   @"view2": column[i]
                   };
    }
    NSArray * horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:horizontalFormat
                                                                    options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom
                                                                    metrics:nil
                                                                      views:views];
    [self.contentView addConstraints:horizontalConstraints];
}

何か案は?

4

2 に答える 2

2

各 NSLayoutConstraint は 2 つのビューのみを関連付けることができますが、追加の制約を追加することを妨げるものは何もありません。例えば:

[NSLayoutConstraint constraintWithItem:column[i-1] attribute: NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:column[i] attribute:NSLayoutAttributeWidth multiplied:1.f constant:0.f];

[NSLayoutConstraint constraintWithItem:column[i+1] attribute: NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:column[i] attribute:NSLayoutAttributeWidth multiplied:1.f constant:0.f];

これら 2 つの制約を追加すると、i-1、i、および i+1 の「列」はすべて同じ幅になります。

于 2015-02-19T05:07:01.740 に答える