使用iOS6的约束与iAd的

使用iOS6的约束与iAd的

问题描述:

我想用约束来布置我的看法...... 它应该是这样的:使用iOS6的约束与iAd的

在人像模式: enter image description here

在风景模式: enter image description here

到目前为止我的代码是约束:

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[profilHeader]|" 
                     options:0 
                     metrics:nil 
                     views:NSDictionaryOfVariableBindings(profilHeader)]]; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_ad]|" 
                     options:0 
                     metrics:nil 
                     views:NSDictionaryOfVariableBindings(_ad)]]; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_tableView]|" 
                     options:0 
                     metrics:nil 
                     views:NSDictionaryOfVariableBindings(_tableView)]]; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[profilHeader(100)][_ad(50)][_tableView]-0-|" 
                     options:0 
                     metrics:nil 
                     views:NSDictionaryOfVariableBindings(profilHeader, _ad, _tableView)]]; 

如果我不把(50)放在_ad的旁边,那么_tableView将会覆盖它。

当然,并与(50)一边_AD,当景观,它不会拉升的tableView 18像素的高(因为广告届时将广告480x32)...

您需要设置方向变化时“广告”的高度:

- (void)updateViewConstraints{ 
    [super updateViewConstraints]; 

    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_profilHeader]|" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(_profilHeader)]]; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_ad]|" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(_ad)]]; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_tableView]|" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(_tableView)]]; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_profilHeader(100)][_ad][_tableView]-0-|" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(_profilHeader, _ad, _tableView)]]; 

    //remove the existing constraint 
    [self.view removeConstraint:self.heightConstraint]; 
    //set the height according to orientation 
    if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){ 
    self.heightConstraint=[NSLayoutConstraint constraintWithItem:_ad attribute:NSLayoutAttributeHeight relatedBy:0 toItem:nil attribute:0 multiplier:1.0 constant:50]; 
    } 
    //landscape 
    else{ 
    self.heightConstraint=[NSLayoutConstraint constraintWithItem:_ad attribute:NSLayoutAttributeHeight relatedBy:0 toItem:nil attribute:0 multiplier:1.0 constant:32]; 
    } 
    [self.view addConstraint:self.heightConstraint]; 
}