2012-10-23 80 views
0

我在IBButtonView的屏幕底部有IBOutlet,当它显示白屏(不能加载广告)时,我不会隐藏它。iAds没有隐藏

我有这样的代码,但它不工作:

- (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]; 
} 

你能帮我请,我与它挣扎了近两小时... ...:/

+0

为什么没有使用基于块的动画?为什么不是'ADBannerView'的中心被改变了? – holex

+0

但是这种方法也应该起作用。即使我删除[UIView beginAnimations:@“hideAd”context:nil];和[UIView commitAnimations],它仍然没有在屏幕上移动。 – 1337code

+0

检查我的答案,我会放弃旧的'-beginAnimation:context:'方法,正如苹果在iOS4 +中推荐的那样。 – holex

回答

0

你应该尝试像这样的东西(这是来自现场项目)。 iAd横幅位于屏幕的底部,当它变为不可见时它就会关闭,并且它必须可见时才会回来。

_isiADBannerVisible只是一个简单的Boolean变量。

- (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]; 

    } 
}