UITableViewController:添加和删除iAd

时间:2014-07-15 21:01:18

标签: ios uitableview iad

场景 =我有一个UITableViewController,它将iAd添加(通过故事板)到tableView的顶部但在导航栏下方(不在表格视图单元格或行中)。有一个BOOL值(“adsDisabled”),如果BOOL为YES,我希望广告消失。这是我所得到的美丽插图...

enter image description here

我尝试了什么 =如果某事物的高度为50像素而你的身高减少了50像素,它就不再存在(或显示出来)。但当然它确实......这段代码......

if ([[[PFUser currentUser] objectForKey:@"adsDisabled"]isEqualToNumber:[NSNumber numberWithBool:YES]]) {

    self.adBanner.layer.frame = CGRectMake(self.adBanner.layer.frame.origin.x, self.adBanner.layer.frame.origin.y, self.adBanner.layer.frame.size.width, self.adBanner.layer.frame.size.height - 50);

    self.tableView.layer.frame = CGRectMake(self.tableView.layer.frame.origin.x, self.tableView.layer.frame.origin.y - 50, self.tableView.layer.frame.size.width, self.tableView.layer.frame.size.height);

    [NSLayoutConstraint constraintWithItem:self.navigationController.navigationBar attribute:NSLayoutAttributeBottom
                                 relatedBy:NSLayoutRelationEqual toItem:self.tableView
                                 attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0];

}

else {

    self.adBanner.layer.frame = CGRectMake(self.adBanner.layer.frame.origin.x, self.adBanner.layer.frame.origin.y, self.adBanner.layer.frame.size.width, self.adBanner.layer.frame.size.height);
}

什么都不做。

解决方法 =我可以做...

self.adBanner.hidden = YES;

但是这会在导航栏和第一个表格视图单元格之间留下不合需要的空间......

enter image description here

问题 =如何让iAd完全消失,并且不会在导航栏和第一个表格视图单元格之间留下不需要的空间?

2 个答案:

答案 0 :(得分:1)

您是否尝试将广告设置为tableview的标题视图?然后,当您需要隐藏它时,将标题视图设置为nil。

答案 1 :(得分:0)

好的,这就是我做的工作。我使用了2个视图和一个AdBanner。第一个观点我和#34;奠定了基础"视图320px x 50px。然后我将第二个视图放在顶部'该视图的尺寸与第一个(320px x 50px)相同,并设置第二个视图的约束| - | (上,下,左,右)到0px。然后(仍然使用第二个视图)我创建了一个高度约束,默认设置为50px并为其创建了一个IBOutlet(重要)。接下来我要做的是将AdBanner放在第二个视图的顶部,使用| - | (顶部,底部,左侧,右侧)到第二个视图的0px。然后在代码中我写了......

if ([[[PFUser currentUser] objectForKey:@"isPremium"]isEqualToNumber:[NSNumber numberWithBool:YES]]) {

    self.heightConstraint.constant = 0;

    self.adBanner.hidden = YES;

    self.heightView.layer.frame = CGRectMake(self.heightView.layer.frame.origin.x, self.heightView.layer.frame.origin.y, self.heightView.layer.frame.size.width, self.heightView.layer.frame.size.height - 50);

    self.backgroundView.layer.frame = CGRectMake(self.backgroundView.layer.frame.origin.x, self.backgroundView.layer.frame.origin.y, self.backgroundView.layer.frame.size.width, self.backgroundView.layer.frame.size.height - 50);
}

else {

    NSLog(@"ads visible");
}

效果很好。