1

AutoLayout (コードを使用) をいじっていたところ、よくわからないものにぶつかりました。問題を示すために簡単な例を作成しました。

- (void)viewDidLoad
{
    [super viewDidLoad];

    //create views
    UIView *redView = [UIView new];
    redView.backgroundColor = [UIColor redColor];
    redView.translatesAutoresizingMaskIntoConstraints = NO;

    UIView *blueView = [UIView new];
    blueView.backgroundColor = [UIColor blueColor];
    blueView.translatesAutoresizingMaskIntoConstraints = NO;

    //add views to viewcontroller's view
    [self.view addSubview:redView];
    [self.view addSubview:blueView];

    //add contraints
    NSDictionary *views = NSDictionaryOfVariableBindings(redView, blueView);

    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[redView]-|" options:0 metrics:nil views:views]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[blueView]-|" options:0 metrics:nil views:views]];

    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[redView]-[blueView]-|" options:0 metrics:nil views:views]];
}

次の結果が期待されます: http://i.stack.imgur.com/LCWQP.png

しかし、代わりに次の結果が得られます: http://i.stack.imgur.com/DJK5i.png

今、私はそれを使用して解決できることを知っています[NSLayoutConstraint constraintWithItem: attribute: relatedBy: toItem: attribute: multiplier: constant: ]が、VisualFormatオプションがあるのか​​ 、それとも私のコードに何かが欠けているのか疑問に思っていました...

私の学習の旅の間、あなたの助けを前もってありがとう!

4

1 に答える 1

0
@"V:|-[redView]-[blueView]-|"

これは、redView の下部を blueView の上部に揃える必要があることを示しています。redView と blueView の相対的な高さについては何も述べていません。

同じ高さにしたい場合は、そう言えます。

@"V:|-[redView]-[blueView(==redView)]-|"
于 2014-03-04T16:30:07.300 に答える