3

ConstraintWithVisualFormat で水平および垂直のビジュアル フォーマットを一緒に追加する方法は? 横しかありません。V:|-50-[leftButton] と V:|-50-[rightButton] を追加したいです。どうやってするか?別の NSLayoutConstraint を作成しますか?

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [leftButton setTitle:@"Left" forState:UIControlStateNormal];
    [leftButton setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addSubview:leftButton];
    UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [rightButton setTitle:@"Right" forState:UIControlStateNormal];
    [rightButton setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addSubview:rightButton];

    NSArray *layoutConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-50-[leftButton(>=80)]-50-[rightButton(>=80)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(leftButton, rightButton)];
    [self.view addConstraints:layoutConstraints];
}
4

3 に答える 3

2

ビジュアル形式を使用して、好きなだけ制約の個別のセットを作成できます。同じ文字列に水平方向と垂直方向の制約を混在させることはできませんが、作成を妨げるものは何もありません:

H:|-[view]-|

に続く

V:|-[view]-| 

各 VFL ステートメントは、スーパービューの 1 行または 1 列でレイアウトを表すものと考えてください。

于 2013-07-05T08:54:09.110 に答える
1

ああ、わかった。次のような別の制約を作成する必要があります。

NSLayoutConstraint *leftButtonLayoutConstraint = [NSLayoutConstraint constraintWithItem:leftButton attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:10.0];
    [self.view addConstraint:leftButtonLayoutConstraint];

これが最善の方法かどうか教えてください。しかし、それはどのようにも機能します。

于 2013-07-05T06:44:38.163 に答える