我创建了一个类作为AdMobViewController,我用它来添加这个类的横幅。横幅创建但视图中的其他对象不向上滚动。我如何以编程方式向上滚动视图中的所有对象。
我的AdMobViewController类和方法:
+ (void)createBanner:(UIViewController *)sender
{
GADRequest *request = [GADRequest request];
request.testing = YES;
request.testDevices = [NSArray arrayWithObjects:GAD_SIMULATOR_ID, nil];
GADBannerView *bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
bannerView.adUnitID = @"ca-app-pub-123456";
bannerView.rootViewController = (id)self;
bannerView.delegate = (id<GADBannerViewDelegate>)self;
bannerView.frame = CGRectMake(0, 518, 320, 50);
[bannerView loadRequest:request];
[sender.view addSubview:bannerView];
}
我用它来创建横幅:
[AdMobViewController createBanner:self];
答案 0 :(得分:7)
工作样本副本在这里:
使用:[AdMobViewController createBanner:self];
#import "AdMobViewController.h"
#import "GADBannerView.h"
@interface AdMobViewController ()
@end
@implementation AdMobViewController
static GADBannerView *bannerView;
static UIView *senderView;
static UIView *containerView;
static UIView *bannerContainerView;
static float bannerHeight;
+ (void)createBanner:(UIViewController *)sender
{
if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
{
bannerHeight = 50;
}
else
{
bannerHeight = 90;
}
GADRequest *request = [GADRequest request];
request.testDevices = [NSArray arrayWithObjects:GAD_SIMULATOR_ID, nil];
bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
bannerView.adUnitID = @"ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx";
bannerView.rootViewController = (id)self;
bannerView.delegate = (id<GADBannerViewDelegate>)self;
senderView = sender.view;
bannerView.frame = CGRectMake(0, 0, senderView.frame.size.width, bannerHeight);
[bannerView loadRequest:request];
containerView = [[UIView alloc] initWithFrame:senderView.frame];
bannerContainerView = [[UIView alloc] initWithFrame:CGRectMake(0, senderView.frame.size.height, senderView.frame.size.width, bannerHeight)];
for (id object in sender.view.subviews) {
[object removeFromSuperview];
[containerView addSubview:object];
}
[senderView addSubview:containerView];
[senderView addSubview:bannerContainerView];
}
+ (void)adViewDidReceiveAd:(GADBannerView *)view
{
[UIView animateWithDuration:0.5 animations:^{
containerView.frame = CGRectMake(0, 0, senderView.frame.size.width, senderView.frame.size.height - bannerHeight);
bannerContainerView.frame = CGRectMake(0, senderView.frame.size.height - bannerHeight, senderView.frame.size.width, bannerHeight);
[bannerContainerView addSubview:bannerView];
}];
}
@end
答案 1 :(得分:0)
我觉得你有很多事情需要考虑:
[sender.view addSubview:bannerView]
不会移动其他观看次数,
相反,您将横幅视图直接放在视图的顶部
层次结构。
广告是异步加载的,因此您应该实现委托
用于显示和隐藏广告视图的GADBannerView
方法。
如果您真的想要移动其他视图,请使用一些 一种容器视图,包括除了你的所有其他内容 旗帜。如果您收到广告,则可以轻松移动容器视图 (或缩小它)并在你的某个位置显示你的横幅视图 主要观点。
干杯
答案 2 :(得分:0)
在委托回调adViewDidReceiveAd:
内,检查广告的尺寸并相应地移动您的观看次数
答案 3 :(得分:0)
这对我有用:
GADBannerView *gv=[[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
[self.view addSubview:gv];
gv.adUnitID = @"ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx";
gv.rootViewController = self;
gv.delegate=(id<GADBannerViewDelegate>)self;
GADRequest *request = [GADRequest request];
// Enable test ads on simulators.
request.testDevices = @[ GAD_SIMULATOR_ID ];
[gv loadRequest:request];
答案 4 :(得分:0)
这是旁白,因为我的问题看起来很相似,但事实并非如此。
应用ID 非与广告单元ID 相同。
而且,愚蠢的是,他们同时从 ca-app-pub - 和很多数字开始。我使用的是App ID,我可以保证 100%不起作用。
是的,我觉得很傻,但谷歌的人应该让他们不一样。
但是,如果您使用广告单元ID,令人惊讶的是,一切正常。 :)