2015-06-22 2 views
3

В настоящее время я добавляю баннеры iAd в свою игру SpriteKit, и я успешно получил показ объявлений. Но когда я иду, чтобы удалить баннер, нажав его снизу, он не перемещается, хотя это абсолютно противоположно коду, чтобы заставить его появиться.iAd позиция баннера не обновляется

Это функция, которая вызывается из уведомления наблюдателя:

func hideBannerAd(notification:NSNotification) 
{ 
    if bannerAdVisible == true 
    { 
     println(bannerAd.frame); 

     UIView.beginAnimations("hideAd", context: nil); 
     bannerAd.frame = CGRectOffset(bannerAd.frame, 0, bannerAd.frame.size.height); 
     println(bannerAd.frame); 
     UIView.commitAnimations() 
     bannerAdVisible = false 
     bannerAd.cancelBannerViewAction() 
    } 
} 

В 2 println заявления произвести следующее:

(0,0, 1024,0, 768,0, 66,0)

(0,0, 1090,0, 768,0, 66,0)

Таким образом, положение баннера меняется, но оно не отображается на экране.

Если вы знаете проблему, я был бы благодарен за небольшую помощь.

EDIT Я добавлю, что hideBannerAd и весь код, чтобы сделать с объявления в GamveViewController.

+1

первая: где эта функция называется? от основной/ui нитки? во-вторых: вы используете автоматическую компоновку? – luk2302

+1

Если «frame» обновляется, но представление не изменяется, вы можете вызвать этот метод в фоновом потоке. Кроме того, стилистически, я предлагаю вам удалить старый синтаксис анимации iOS 3-стиля. –

+0

Он вызывается из наблюдателя NSNotificationCenter из отдельного SKScene, и функция находится в классе GameViewController. Я не думаю, что я использую автоматический макет, поскольку я сделал все это в коде, и там нет ничего общего с макетом. – Antony

ответ

0

Проблема решена!

С помощью комментария @aramusss я обнаружил, что я вызывал функцию, чтобы показать баннер в функции viewWIllLayoutSubViews, поэтому я перевел его на функцию viewDidLoad, и теперь она работает!

Спасибо вам за помощь!

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