2015-04-21 7 views
10

Ich habe zwei iPhone gemacht Übereinander apps Swift verwenden und nur den iAd-Framework implementiert und die hinzugefügt self.canDisplayBannerAds = true in meinem viewDidLoad() unter GameViewController().ein iAd-Banner auf dem Bildschirm statt Ändern der Größe Bildschirm

Wenn Anzeigen in meinem Spiel erscheinen, ändert sich der Bildschirm des Spiels, so dass alles noch sichtbar ist. Wenn dies geschieht, wird der Spielbildschirm vertikal geschrumpft und das Spiel wird für den Spieler viel schwieriger.

Wie kann ich die Banneranzeige am unteren Rand des Bildschirms überlagern, ohne die Größe des Spielbildschirms zu ändern? Ich möchte, dass der untere Teil des Spielbildschirms einfach nicht sichtbar ist.

+0

Fügen Sie den 'ADBannerView' programmatisch. Die Verwendung von 'self.canDisplayBannerAds = true' gibt Ihnen nicht viel Kontrolle. http://stackoverflow.com/a/28708377/2108547 –

Antwort

0

versuchen, es ....

// 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

SpriteKit Verwendung in Objective-C, das für mich gearbeitet, um das Banner am unteren Rand hinzuzufügen, ohne den ursprünglichen Inhalt Ändern der Größe:

#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

Soweit ich weiß, ist das Problem in der self.canDisplayBannerAds = true

Dieser Code arbeitete pe Richtig für mich! Bitte stellen Sie sicher, dass Sie Ihre AdBannerView "adbanner" nennen (var adBanner = ADBannerView())

Fügen Sie diesen 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)