0

「広告コンテンツがiAdによって配信されていないときは、アプリ内のバナーを非表示にする必要がある」ため、アプリが拒否されました。次に、このサンプルコードを提供します。

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    if (self.bannerIsVisible)
    {
        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
        // assumes the banner view is at the top of the screen.
        banner.frame = CGRectOffset(banner.frame, 0, -banner.frame.size.height);
        [UIView commitAnimations];
        self.bannerIsVisible = NO;
    }
}

これで、iAdが画面の上部ではなく下部に表示されます。また、3.5インチと4インチの画面を数えたいと思ったので、ここに私のコードを示します。

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    if (self.bannerIsVisible)
    {
        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width * scale, result.height * scale);

        if(result.height == 1136){
            banner.frame = CGRectOffset(banner.frame, 498, -banner.frame.size.height);
        }else{
            banner.frame = CGRectOffset(banner.frame, 410, -banner.frame.size.height);
        }

        [UIView commitAnimations];
        self.bannerIsVisible = NO;
    }
}

本当に厄介なのは、私のコードがテスト用のiPhoneとiOSシミュレーターで正しく機能することです。

私は何が間違っているのですか?

4

1 に答える 1

1

バナーが下部にある場合はbanner.frame.size.height、差し引くのではなく合計してバナーを非表示にする必要があります。異なる画面に対して追加の計算を行う必要はありません。

したがって、これで十分です。

banner.frame = CGRectOffset(banner.frame, 0, banner.frame.size.height);
于 2012-11-15T18:10:28.903 に答える