2010-11-06 4 views
2

Je suis mon application payante en train de convertir iPhone à un libre, avec l'intégration AdMobEn utilisant AdMob AppDelegate et des vues de dimensionnement automatique

Pour simplifier l'intégration, j'ajoute le AdMobView au AppDelegate.

Tout cela fonctionne très bien, car il affiche une annonce dans le bas de l'écran. Mais malheureusement, il couvre le contenu qui était précédemment montré dans le bas, et c'est aussi le cas pour les vues suivantes étant poussé à la navigationController. Existe-t-il un moyen d'inciter Interface Builder à "compresser" le contenu pour l'adapter à la vue de l'annonce, tout en laissant tous les autres boutons et vues visibles?

Voici un sous-ensemble du code AppDelegate avec l'intégration AdMob:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
// Override point for customization after application launch. 
MyViewController *viewController = [[MyViewController alloc] initWithNibName:nil bundle:nil]; 

navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
[viewController release]; 

[window addSubview:navigationController.view]; 

[window makeKeyAndVisible]; 

// Request an ad 
adMobAd = [AdMobView requestAdWithDelegate:self]; // start a new ad request 
[adMobAd retain]; // this will be released when it loads (or fails to load) 

    return YES; 
} 

- (UIViewController *)currentViewControllerForAd:(AdMobView *)adView { 
    return navigationController; 
} 

// Sent when an ad request loaded an ad; this is a good opportunity to attach 
// the ad view to the hierachy. 
- (void)didReceiveAd:(AdMobView *)adView { 
    // get the view frame 
    CGRect frame = self.window.frame; 

    // put the ad at the bottom of the screen 
    adMobAd.frame = CGRectMake(0, frame.size.height - 48, frame.size.width, 48); 

    [navigationController.view addSubview:adMobAd]; 
} 

Répondre

0

Vous pouvez tout simplement redimensionner la navigationController.view.frame afin que le adMobAd ne bloque pas le contenu.

ajouter Essentiellement ceci à la fin de votre appel didReceiveAd:

CGRect navFrame = navigationController.view.frame; 
navFrame.height -= 48; 
navigationController.view.frame = navFrame; 
+0

C'est une vieille réponse, mais je veux juste ajouter que, parfois, AdMob ne pas afficher une annonce mais la vue sera toujours là, donc Bien que vous ne le voyiez pas, il bloque toujours cette partie de l'écran. –

Questions connexes