2012-06-22 3 views
0

Да, я видел другой вопрос, и они не помогают. Так что я хочу переместить iAD-баннер с моего вида. Он находится на iphone, в верхней части экрана на портретном изображении. Вот мой код. Где я здесь не так?Переместить ADBannerView с экрана?

//Move the banner off the screen. 
- (void)moveBannerViewOffScreen 
{ 
    if (self.bannerView.isHidden == NO) 
    { 
     [UIView beginAnimations:@"animateAdBannerOff" context:NULL]; 
     bannerView.frame = CGRectOffset(bannerView.frame, 0, bannerView.frame.size.height); 
     [UIView commitAnimations]; 
     self.bannerView.hidden = YES; 
    }  
} 

//Move the banner on the screen. 
- (void)moveBannerOnScreen 
{ 
    if (self.bannerView.isHidden ==YES) 
    { 
     [UIView beginAnimations:@"animateAdBannerOn" context:NULL]; 
     bannerView.frame = CGRectOffset(bannerView.frame, 0, -bannerView.frame.size.height); 
     [UIView commitAnimations]; 
     self.bannerView.hidden = NO; 
    } 
} 
+0

Я думаю, вы можете назвать свойство setFrame только тогда, когда представление Loaded или любой его делегат. вы пытались с addSubview –

+0

Вид загружен, это происходит, когда появляется ошибка отображения объявления, из-за сбоя сети и т. д. – Jason

ответ

1

Лучше вы можете изменить код в "moveBannerViewOffScreen" для Iphone, как этого

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:bannerView cache:YES]; 
bannerView.frame = cgRectMake(0,-50,50,320); 
[UIView commitAnimations]; 

в "moveBannerViewOnScreen"

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:bannerView cache:YES]; 
bannerView.frame = cgRectMake(0,0,50,320); 
[UIView commitAnimations]; 
+0

Ваш cgRectMake должен быть CGRectMake. Нет ошибки в этом. Спасибо за вашу помощь! – Jason

+0

Эти цифры жестко закодированы. Я дал ниже ответ, более гибкий. Я также объяснил, почему оригинальное решение не работает. –

0

Вам не нужны коды, связанные с потайными. Кроме того, ваш код будет перемещать просмотр баннера далее каждый раз или вниз каждый раз, потому что вы применяете смещение постепенно. Это лучше для вас, чтобы вручную установить рамки каждый раз:

//Offscreen frame 
bannerView.frame = CGRectMake(0, -bannerView.frame.size.height, bannerView.frame.size.width, bannerView.frame.size.height); 

//Onscreen frame 
bannerView.frame = CGRectMake(0, 0, bannerView.frame.size.width, bannerView.frame.size.height); 
+0

На самом деле яблоко говорит, чтобы скрыть баннер, пока не появится объявление для показа. Или скройте баннер, если ни одно объявление не может выполнить запрос на сетевые проблемы. – Jason

+0

Откуда вы получили эту информацию? –

+0

[https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iAd_Guide/WorkingwithBannerViews/WorkingwithBannerViews.html#//apple_ref/doc/uid/TP40009881-CH4-SW10] – Jason

0

еще один простой ответ: [myBannerView1 SetAlpha: 0];

Смежные вопросы