xcode 4.3 - раскадровка - iAd продолжает двигаться - PullRequest
2 голосов
/ 22 марта 2012

Я добавил iAd в свое приложение для iphone, чтобы быть на вершине моего приложения. Первоначально я помещаю его в x = 0 и y = -50, чтобы оно появилось за пределами экрана. Я использую следующий код для этого в моем .m:

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

- (void)bannerViewDidLoadAd:(ADBannerView *)abanner
{
    if (!self.bannerIsVisible)
    {
        [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
        // Assumes the banner view is just off the bottom of the screen.
        banner.frame = CGRectOffset(banner.frame, 0, banner.frame.size.height);
        [UIView commitAnimations];
        self.bannerIsVisible = YES;
    }
}

Когда мое приложение запускается, iAd отображается вверху без каких-либо проблем. но когда я открываю другое приложение и возвращаюсь к нему (не убивая его, чтобы мое приложение работало в фоновом режиме), баннер перемещается еще на 50 пикселей вниз enter image description here

есть идеи?

1 Ответ

2 голосов
/ 22 марта 2012

Вы добавляете 50.0px к banner.frame.origin.y в обоих случаях.

В любом случае: даже если вы вычтете 50.px в didFailToReceiveAdWithError:, может случиться так, что didFailToReceiveAdWithError: будет вызвано нескольконесколько раз подряд, и ваш код может перемещать баннер все выше и выше (-50,0, -100,0, -150,0 ...).

Поэтому лучше жестко закодировать скрытые и видимые позиции, а не вычислять их.

Попробуйте это:

- (void)bannerView:(ADBannerView *)abanner didFailToReceiveAdWithError:(NSError *)error
{
    if (self.bannerIsVisible)
    {
        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
        banner.frame = CGRectMake(0.0,-50.0,banner.frame.size.width,banner.frame.size.height);
        [UIView commitAnimations];
        self.bannerIsVisible = NO;
    }
}

- (void)bannerViewDidLoadAd:(ADBannerView *)abanner
{
    if (!self.bannerIsVisible)
    {
        [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
        banner.frame = CGRectMake(0.0,0.0,banner.frame.size.width,banner.frame.size.height);
        [UIView commitAnimations];
        self.bannerIsVisible = YES;
    }
}
...