2010-10-08 5 views
0

Я добавил представление баннера для реализации iAd в нижней части экрана. Но при запуске на симуляторе представление баннера немного выше фиксированного для него кадра. Он выглядит как прозрачная полоса и не выбирается. Через некоторое время он автоматически опускается на дно, как черная полоса, в которой говорится, что тестовая реклама.iAd в iPhone анимирует, когда не загружен

Я хочу, чтобы баннер выглядел на дне и не анимировал.

Вот мой код. Код объявления adView:

adView = [[[ADBannerView alloc] initWithFrame:CGRectOffset(CGRectZero, 0, 350)] autorelease]; 
adView.frame = CGRectMake(0,340,320,25); 
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50]; 
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; 
adView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin; 
adView.tag = 111; 
[self.navigationController.view addSubview:adView]; 
adView.delegate = self; 
self.bannerIsVisible = NO; 
adView.hidden = YES; 

Ниже приведены методы делегата.

- (void)bannerViewDidLoadAd:(ADBannerView *)banner 
{ 
    if (!self.bannerIsVisible) { 

     [UIView beginAnimations:@"animateAdBannerOff" context:NULL]; 

     // banner is invisible now and moved out of the screen on 50 px 
     banner.frame = CGRectOffset(banner.frame, 0, 50); 
     [UIView commitAnimations]; 
     self.bannerIsVisible = YES; 
    } 
} 

// When iAd is not availale on the banner 
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
    if (self.bannerIsVisible) { 

     [UIView beginAnimations:@"animateAdBannerOff" context:NULL];   
     // banner is visible and we move it out of the screen, due to connection issue 
     banner.frame = CGRectOffset(banner.frame, 0, 520); 
     [UIView commitAnimations];  
     self.bannerIsVisible = NO; 
    } 
} 

Я не могу понять проблему. Незлая помощь.

ответ

0

Первый. Когда загружается основной вид, как первоначально размещаются объекты в нем? Я всегда размещаю их в правильном положении внутри метода viewDidLoad. Так разместить свой баннер ниже нижней части главного окна, убедившись, что

myBannerFrame.origin.x = 0; 
myBannerFrame.origin.y = mainView.frame.size.height; 
[myBanner setFrame:myBannerFrame]; // no need for animation here! 

Также viewDidLoad является хорошим местом, чтобы установить флаг self.bannerIsVisible в FALSE.

Второй. Не использовать фиксированные значения пикселей, как здесь

banner.frame = CGRectOffset(banner.frame, 0, 50); 

вместо 50 вы лучше положить banner.frame.size.height Это поможет вам избежать многих ошибок и перекосов.

+0

У меня позже появилась возможность просмотра баннера непосредственно через конструктор интерфейса. Но через какое-то время он, похоже, сдвинется. – Bismita