2012-10-23 85 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]; 

    } 
}