2012-02-12 2 views
2

私は、画面の下部にiAdバナーをアニメーション化(0.5秒間)してから完了すると、スーパービューからそれを削除します。警告をオフにしないでiAdを出し入れしてアニメ化する

限り、私はのiAd閉塞収益がコンソールで起動しますアニメーションを持っているように:

ADBannerView:バナービューを警告は、広告を持っていますが、不明瞭にすることができます。 このメッセージは、バナー表示ごとに1回だけ印刷されます。

コードは単純です:(アニメーション中の行が問題点ブロック)

[UIView animateWithDuration:0.5 animations:^{ 
    self.adBannerView.frame = CGRectSetY(self.adBannerView.frame, viewHeight); 
} completion:^(BOOL finished) { 
    [self.adBannerView removeFromSuperview]; 
}]; 

私はメッセージを無視した場合、それは広告や私のアプリのrecieves何の数に影響を与えるのだろうか?

また、これは私が-(void)bannerViewDidLoadAd:(ADBannerView *)bannerデリゲートメソッドから広告の外観をアニメーション化されたとき、私はその方法のwillバリエーションを使用してアニメーションを維持しながら示すからwarnignを停止する可能性が起こりました。

iAdsのオンスクリーンとオフスクリーンのアニメーションはどのように行われますか?

答えて

0

警告はあなたのアプリに悪いことはありません。画面に表示されているかどうかに関係なく、広告が読み込まれ、デリゲートメソッドが呼び出されます。あなたは正しくそれをやっている。この警告は、特定のビューのサイズ変更などにもかかわらず広告が表示されることがあるため、広告が常に画面上に表示されるようにすることを推奨しています。しかし、やはり、それはエラーではなく、示唆です。

+0

私はあなたがこれをあまりにも多く取得すると、アップルはあなたが得る広告の数を制限し、広告からの収入を減らすというどこかを読んだと思った。 –

+0

うわー、私は前にそれを聞いたことがない。私はそれを調べます。 – CodaFi

+0

私はそれが何か他のことについて読んでいるかもしれない、どこを覚えていないかもしれない、そしてそれは今朝だけだった:/ –

5

私は同じことをしばらく考えていました。私はこれをするときに何の警告も出ないので、私はトリックを思いついたと信じています。

は、ここに私が持っているビュー階層です:

UIView (same size as your iAd) 
|_ iAd (make sure to pin the height and width if using iOS 6 auto layout) 
|_ UIView (I create this dynamically and use it's presence to determine whether I should show or hide the iAd from the delegate) 

次のコードは、私は、Interface Builderで設定している自動レイアウト制約を操作します。自動レイアウトを使用していない場合は、アニメーションをトリガーするものを変更する必要があります。

- (void)hideAdBanner { 
    if (!__adBannerReverseSideView) { 
     __adBannerReverseSideView = [[UIView alloc] initWithFrame:__adBannerView.frame]; 
     __adBannerReverseSideView.backgroundColor = [UIColor blackColor]; 
     __adBannerReverseSideView.opaque = YES; 

     [UIView transitionFromView:__adBannerView toView:__adBannerReverseSideView duration:0.3 
       options:UIViewAnimationOptionTransitionFlipFromBottom | UIViewAnimationOptionCurveEaseInOut 
       completion:^(BOOL finished) { 
        [UIView animateWithDuration:0.3 animations:^{ 
         __adBannerBottomConstraint.constant += __adBannerContainerView.frame.size.height; 
         [self.view layoutIfNeeded]; 
        }]; 
       }]; 
    } 
} 

- (void)showAdBanner { 
    if (__adBannerReverseSideView) { 
     [UIView animateWithDuration:0.3 
      animations:^{ 
       __adBannerBottomConstraint.constant -= __adBannerContainerView.frame.size.height; 
       [self.view layoutIfNeeded]; 
      } 
      completion:^(BOOL finished) { 
       [__adBannerView setNeedsLayout]; 
       [UIView transitionFromView:__adBannerReverseSideView toView:__adBannerView duration:0.3 
         options:UIViewAnimationOptionTransitionFlipFromTop | UIViewAnimationOptionCurveEaseInOut 
         completion:^(BOOL finished) { 
          [__adBannerReverseSideView removeFromSuperview]; 
          __adBannerReverseSideView = nil; 
         }]; 
      }]; 
    } 
} 

非表示のコードは、ADバナーを「リバース」ビューに移行します。アニメーションの種類はoptionsパラメータで変更できます。

ショーコードは逆の方向(「逆」ビューからADバナーへ)に移行します。すべてのアニメーションは、ADバナーと同じサイズのスーパービューで行われます。この方法では、ビュー全体がアニメートされません。

iAdをスーパービューのままにします。削除しないでください。これは警告の根本的な原因かもしれませんが、わかりません。ここではその後

は、私のADのデリゲートメソッドです:

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { 
    [self hideAdBanner]; 
} 

- (void)bannerViewDidLoadAd:(ADBannerView *)banner { 
    [self showAdBanner]; 
} 

は、エラー変数をチェックしていないため、私を殺してはいけません。私はそのコードをまだ書いていない。

iOS 6の自動レイアウトで広告バナービューの高さと幅を固定することについては、iAdが元の位置に戻るときに表示されない場合は、左上隅が右下にシフトしますそのスーパービューの高さと幅が表示されます。 :)楽しいもの。

関連する問題