//這個地方不要定義Frame,下面的Visual Format才是定義Frame相關的地方
UIView *redView = [[UIView alloc] init];
redView.backgroundColor = [UIColor redColor];
//參照Apple Doc 這個地方設置NO,是為了不讓Constraint與View本身的autoresize沖突
[redView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:redView];
UIView *blueView = [[UIView alloc] init];
blueView.backgroundColor = [UIColor blueColor];
[blueView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:blueView];
//綁定兩個View相關
NSDictionary *views = NSDictionaryOfVariableBindings(redView, blueView);
//此處的constraint是為了定義Frame水平方向相關(x, width)
[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(>=10)-[redView(200)]"
options:0
metrics:nil
views:views]];
//此處的constraint是為了定義Frame豎直方向相關(y, height)
[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(>=240)-[redView(100)]"
options:0
metrics:nil
views:views]];
[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"H:[blueView(==redView)]"
options:0
metrics:nil
views:views]];
[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(40)-[blueView(==redView)]"
options:0
metrics:nil
views:views]];
//此處的constraint是為了描述以上兩個view的關系
[self.view addConstraint: [NSLayoutConstraint constraintWithItem:blueView
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:redView
attribute:NSLayoutAttributeLeft
multiplier:1
constant:0]];
以上.
關於Method和Macro不提供解釋,請參照Apple Doc.