2015-04-21 12 views
10

Zrobiłem dwie aplikacje na iPhone'a za pomocą Swift i właśnie zaimplementowałem iAd Framework i dodałem self.canDisplayBannerAds = true w moim viewDidLoad() pod GameViewController().Nakładanie banera iAd na ekran zamiast zmieniania rozmiaru ekranu

Gdy reklamy pojawiają się w mojej grze, ekran gry zmienia się tak, że wszystko jest nadal widoczne. Kiedy tak się dzieje, ekran gry skraca się w pionie, a gra staje się znacznie trudniejsza dla gracza.

Jak mogę nałożyć baner reklamowy na dół ekranu bez zmiany rozmiaru ekranu gry? Chcę, aby dolna część ekranu gry była po prostu niewidoczna.

+0

Dodaj 'ADBannerView' programowo. Użycie 'self.canDisplayBannerAds = true' nie daje ci dużej kontroli. http://stackoverflow.com/a/28708377/2108547 –

Odpowiedz

0

spróbować ....

// 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]; 
} 
0

Korzystanie SpriteKit w Objective-C, to pracował dla mnie, aby dodać baner na dole bez zmiany rozmiaru oryginalnej treści:

#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; 
1

O ile mi wiadomo, problem ten występuje w self.canDisplayBannerAds = true

Ten kod działa pe rfectly dla mnie! Upewnij się, że możesz wymienić swoje AdBannerView "adBanner" (var adBanner = ADBannerView())

Dołącz ten kod w 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) 
Powiązane problemy