Вы добавляете 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;
}
}