Наложение баннера iAd на экран вместо изменения размера экрана

Я сделал два приложения для iPhone с помощью Swift и только что реализовал iAd Framework и добавил self.canDisplayBannerAds = true в мой viewDidLoad() в разделе GameViewController().

Когда объявления появляются в моей игре, экран игры меняет размер, чтобы все было видно. Когда это происходит, игровой экран становится суровым по вертикали, и игра становится намного сложнее для игрока.

Как я могу наложить баннерное объявление на нижнюю часть экрана без изменения размера экрана игры? Я хочу, чтобы нижняя часть экрана игры просто не была видна.

Ответ 1

Насколько я знаю, проблема заключается в self.canDisplayBannerAds = true

Этот код отлично работал у меня! Убедитесь, что вы назовете AdBannerView "adBanner" (var adBanner = ADBannerView())

Включите этот код в viewDidLoad

        adBanner = ADBannerView()
        adBanner.frame = CGRectZero
        adBanner.delegate = self
        self.adBanner.frame = CGRectMake(0, self.view.frame.size.height-self.adBanner.frame.size.height, self.adBanner.frame.size.width, self.adBanner.frame.size.height)
        adBanner.backgroundColor = UIColor.clearColor()
        self.view.addSubview(adBanner)

Ответ 2

попробуйте...

// Import iAd and AdMob in your header file
#import "ViewController.h"
// Enter YOUR ad id you receive from AdMob here
#define BANNER_UNIT_ID @"yourAdMobBannerID"

@interface ViewController ()
@end

@implementation ViewController {
    //We will put these here so we can access them globally
    GADBannerView *adMobView;
    ADBannerView *iAdView;
    CGRect screenBounds;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Get device screen size
    // For example, screenBounds on an iPhone 6 will look like this
    // screenBounds.origin.x == 0
    // screenBounds.origin.y == 0
    // screenBounds.size.width == 375
    // screenBounds.size.height == 667
    screenBounds = [[UIScreen mainScreen] bounds];

    // Setup iAd view
    // Create the AdBannerView
    iAdView = [[ADBannerView alloc] initWithFrame:CGRectZero];

    // Set its delegate
    iAdView.delegate=self;

    // This sets the frame origin at (0,0) which would be the top left of the device screen
    // iAdView.bounds.size.width and iAdView.bounds.size.height sets the size of the AdBannerView
    [iAdView setFrame:CGRectMake(0, 0, iAdView.bounds.size.width, iAdView.bounds.size.height)];

    // This will take the center of our AdBannerView and move it to a point (x,y)
    // We want our AdBannerView.center in the center of the device screen
    // So lets get the width of our screen and divide it by 2. We do this with screenBounds.size.width / 2
    // We also want our AdBannerView to be at the bottom of the screen
    // So lets get the height of our screen with screenBounds.size.height
    // Remember were talking about the center of our AdBannerView here so if we just set it to that
    // Half of our AdBannerView height will be cut off by the bottom of the screen
    // So lets subtract half of our AdBannerView height to fix that with iAdView.bounds.size.height / 2
    iAdView.center = CGPointMake(screenBounds.size.width / 2, screenBounds.size.height - (iAdView.bounds.size.height / 2));

    // Add it to our view
    [self.view addSubview:iAdView];

    // Our AdBannerView is now at the bottom of our devices screen
    // But it takes a second to receive an ad from iAd network so lets make it transparent for now
    iAdView.alpha = 0.0;


    // Setup AdMob view
    // Create the GADBannerView
    adMobView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

    // Use the BANNER_UNIT_ID we defined earlier
    adMobView.adUnitID = BANNER_UNIT_ID;
    adMobView.rootViewController = self;
    [adMobView loadRequest:[GADRequest request]];

    // This sets the frame origin at (0,0) which would be the top left of the device screen
    // adMobView.bounds.size.width and adMobView.bounds.size.height sets the size of the GADBannerView
    [adMobView setFrame:CGRectMake(0, 0, adMobView.bounds.size.width, adMobView.bounds.size.height)];

    // This will take the center of our GADBannerView and move it to a point (x,y)
    // We want our GADBannerView.center in the center of the device screen
    // So lets get the width of our screen and divide it by 2. We do this with screenBounds.size.width / 2
    // We also want our GADBannerView to be at the bottom of the screen
    // So lets get the height of our screen with screenBounds.size.height
    // Remember were talking about the center of our GADBannerView here so if we just set it to that
    // Half of our GADBannerView height will be cut off by the bottom of the screen
    // So lets subtract half of our GADBannerView height to fix that with adMobView.bounds.size.height / 2
    adMobView.center = CGPointMake(screenBounds.size.width / 2, screenBounds.size.height - (adMobView.bounds.size.height / 2));

    // Add it to our view
    [self.view addSubview:adMobView];
    // We don't have to set the alpha of GADBannerView to 0.0 because it is automatically transparent if no ad is available
}

//iAd methods
-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
    NSLog(@"iAd received ad");
    // We received an ad from iAd so lets show it
    // We will animate the transition of its alpha from 0.0 to 1.0
    // Also lets animate our GADBannerView from 1.0 to 0.0 to hide it
    [UIView beginAnimations:nil context:NULL];
    iAdView.alpha = 1.0;
    adMobView.alpha = 0.0;
    [UIView commitAnimations];
}

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
    NSLog(@"iAd failed");
    // We failed to receive an ad from iAd so lets hide it
    // We will animate the transition of its alpha from 1.0 to 0.0
    // Also lets animate our GADBannerView from 0.0 to 1.0 to show it
    // AdMob has near a 100% fill rate so the chances of there being an ad are almost certain
    [UIView beginAnimations:nil context:NULL];
    iAdView.alpha = 0.0;
    adMobView.alpha = 1.0;
    [UIView commitAnimations];
}

Ответ 3

Используя SpriteKit в Objective-C, это помогло мне добавить баннер внизу без изменения исходного содержимого:

#ifdef USING_iAD
//  setup iAds
self.canDisplayBannerAds = YES;
self.canDisplayBannerAds = NO;
self.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual;

//  configure the view
SKView *skView = [[SKView alloc] initWithFrame:self.originalContentView.frame];
[self.originalContentView addSubview:skView];

#else
//  this was the original code
SKView *skView = (SKView *)self.view;
#endif

//skView.showsFPS = YES;
//skView.showsNodeCount = YES;
//skView.showsPhysics = YES;
skView.ignoresSiblingOrder = YES;