Reputation: 111
I've made two iPhone apps using Swift and just implemented the iAd Framework and added self.canDisplayBannerAds = true
in my viewDidLoad()
under GameViewController()
.
When ads appear in my game, the game screen resizes so that everything is still visible. When this happens, the game screen gets shrunken vertically and the game becomes much harder for the player.
How can I overlay the banner ad onto the bottom of the screen without resizing the game screen? I want the bottom part of the game screen to simply not be visible.
Upvotes: 9
Views: 821
Reputation: 6182
As far as I know the issue is in the
self.canDisplayBannerAds = true
This code worked perfectly for me! Please make sure, that you name your AdBannerView "adBanner" ( var adBanner = ADBannerView()
)
Include this code in 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)
Upvotes: 1
Reputation: 11
Using SpriteKit in Objective-C, this worked for me to add the banner at the bottom without resizing the original content:
#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;
Upvotes: 0
Reputation: 7273
try it....
// 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's height will be cut off by the bottom of the screen
// So lets subtract half of our AdBannerView's 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's 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's height will be cut off by the bottom of the screen
// So lets subtract half of our GADBannerView's 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];
}
Upvotes: 0