2012-10-23 1 views
0

J'ai IBOutlet en bas de l'écran pour ADBannerView, et je ne vais pas le cacher quand il affiche un écran blanc (impossible de charger une annonce).iAds ne se cache pas

Je possède ce code, mais il ne fonctionne pas:

- (void)bannerViewDidLoadAd:(ADBannerView *)banner 
{ 
    [UIView beginAnimations:@"showAd" context:nil]; 

    CGRect adBannerViewFrame = [bannerView frame]; 
    adBannerViewFrame.origin.x = 160; 
    adBannerViewFrame.origin.y = 523; 

    bannerView.frame = adBannerViewFrame; 

    [UIView commitAnimations]; 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
    [UIView beginAnimations:@"hideAd" context:nil]; 

    CGRect adBannerViewFrame = [bannerView frame]; 
    adBannerViewFrame.origin.x = 0; 
    adBannerViewFrame.origin.y = 0; 

    bannerView.frame = adBannerViewFrame; 

    [UIView commitAnimations]; 
} 

Pouvez-vous me aider s'il vous plaît, je me bats avec elle pendant deux dernières heures ...:/

+0

pourquoi pas le centre du 'ADBannerView' a été changé? – holex

+0

Mais cette approche devrait fonctionner aussi. Même si je supprime [contexte UIView beginAnimations: @ "hideAd": nil]; et [UIView commitAnimations] ;, il n'est toujours pas déplacé à l'écran. – 1337code

+0

cochez ma réponse, je laisserais tomber l'ancienne méthode '--beginAnimation: context:' comme le recommande Apple dans tous les cas dans iOS4 +. – holex

Répondre

0

vous devriez essayer quelque chose comme ça (c'est d'un projet en direct). la bannière iAd est au bas de l'écran et elle descend quand elle devient invisible, et elle revient quand elle doit être visible.

le _isiADBannerVisible est juste une simple variable Boolean. Pourquoi n'avez-vous pas utilisé d'animation basée sur des blocs?

- (void)bannerViewDidLoadAd:(ADBannerView *)banner { 
    if (_isiADBannerVisible == false) { 
     _isiADBannerVisible = true; 

     [UIView animateWithDuration:0.5f delay:0.f options:UIViewAnimationCurveEaseInOut animations:^{ 
      [banner setFrame:CGRectOffset(banner.frame, 0.f, -50.f)]; 
     } completion:nil]; 
    } 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { 
    if (_isiADBannerVisible == true) { 
     _isiADBannerVisible = false; 

     [UIView animateWithDuration:0.5f delay:0.f options:UIViewAnimationCurveEaseInOut animations:^{ 
      [banner setFrame:CGRectOffset(banner.frame, 0.f, +50.f)]; 
     } completion:nil]; 

    } 
}