ios - 以编程方式添加 GADBannerView

标签 ios objective-c admob

我创建了一个名为 AdMobViewController 的类,并使用该类添加横幅。横幅创建但 View 中的其他对象不向上滚动。我如何以编程方式向上 ScrollView 中的所有对象。

我的 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];

最佳答案

工作示例副本在这里:

使用:[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

关于ios - 以编程方式添加 GADBannerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21760071/

相关文章:

iOS MapView 位于导航栏、状态栏和标签栏 Controller 下方

ios - 带有 NSTimers 和服务器调用的后台模式

ios - XCode 中的 ObjC 链接器标志

android - 切换 AdMob 帐户以更改国家/地区的步骤

android - 如何估算在应用中使用 AdMob 的潜在收入?

ios - 尝试从左上角缩放 View

ios - 在 .Day 中快速比较两个 NSDate 给出了错误的结果

ios - UITableView上的垂直手势识别

android - 即使在关闭应用程序后仍显示 AdMob Interstitial 广告

objective-c - 在 RestKit 中从一个 ObjectManager 映射多个资源