使用iOS6的约束与iAd的
问题描述:
我想用约束来布置我的看法...... 它应该是这样的:使用iOS6的约束与iAd的
在人像模式:
在风景模式:
到目前为止我的代码是约束:
[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];
}