在收到/未收到广告时调整UITableView高度



我正在使用Admob作为广告提供商。我有一个UIViewController,它有一个在情节提要中设置的UITableView,以使用控制器的整个宽度和高度。

当收到广告时,会发生以下情况:

- (void)adViewDidReceiveAd:(GADBannerView *)Adview {
if (bannerView_.hidden) {
bannerView_.hidden = NO;
}
[UIView animateWithDuration:1.0 animations:^ {
// Final frame of ad should be docked to bottom of screen
Adview.frame = CGRectMake(0.0,
self.view.frame.size.height -
Adview.frame.size.height,
Adview.frame.size.width,
Adview.frame.size.height);
}];

这将更新Adview的框架,并使其显示在屏幕底部,按预期工作。

我遇到的问题是UITableView帧。如果我用同样的方法更新框架,我相信它会根据之前在情节提要中的表视图上设置的约束再次更新。

什么是改变UITableView的约束/帧的正确方式,以便如果接收到广告或不接收到广告,则应用相关的改变。

接收--(void)adView:(GADBannerView *)Adview didFailToReceiveAdWithError:(GADRequestError *)error {
故障-- (void)adViewDidReceiveAd:(GADBannerView *)Adview

更好的方法是用显示的广告框来布局视图。在TableView和adView之间有一个约束,然后在adView和底部布局指南之间有另一个约束。将出口设置为底部约束。

然后在代码中,适当地设置底部约束的常量属性,而不是调整框架。设置为0显示广告,设置为-50(或你的广告知名度高度)隐藏。

[UIView animateWithDuration:1 animations:^{
self.adViewConstraint.constant = 0;
self.adView.hidden = NO;
}
[self.view layoutIfNeeded];

现在,当adView被隐藏或显示时,tableView应该会自动调整大小。

最新更新